Эта статья возникла из личного публичного аккаунта:TechFlow, оригинальность это не просто, прошу внимания
СегодняВторая часть темы ГолангаДавайте взглянем на спецификацию языка Go.
Прежде чем мы продолжим сегодняшнее содержание, давайте ответим на вопрос.
Одноклассник спросил меня на заднем плане,Почему Golang больше подходит для разработки распределенных систем? Есть ли у него преимущества перед Java?
На самом деле, ответ на этот вопрос должен включать множество понятий, таких как множество понятий операционной системы о процессах, потоках и сопрограммах. Давайте упростим это и приведем пример простейшей нити. Давайте напишем абзац вМногопоточность в javaпример:
public class MyThread implemnts Runnable {
public void run() {
System.out.println("I am a thread")
}
}
public class Test {
public static void main(String args[]) {
MyThread thread1 = new MyThread();
thread1.start();
}
}
Давайте снова посмотрим на Голанг:
func run() {
fmt.Println("I am a Thread")
}
func main() {
go run()
}
Не проще ли это сравнение?
Спецификация языка Golang
Все мы знаем, что одним из самых больших разногласий между программистами являетсяВ какой строке нужно поставить фигурные скобки?, некоторые пишут другую строку, а некоторые следуют за телом цикла. Эти две группы людей делятся на два жанра, бесконечно воюют друг с другом, а также выводят множество шуток.
Чтобы унифицировать стиль, многие языки стандартизировали стиль кода. Например, Python удаляет фигурные скобки и использует пробелы для отступа кода. К сожалению, кто-то использует четыре пробела для отступа, а кто-то использует табы, и две стороны образуют лагерь, споря друг с другом...
Возможно, разработчики Golang страдали от споров о стиле кода, поэтому Golang совершила эпохальное событие.Строго ограничить стиль кода, принудительно унифицировать все должны использовать один и тот же набор стилей, иначе вы увидите ошибку через несколько минут. Поэтому, прежде чем мы займемся изучением конкретной грамматики, мы должны начать со спецификации языка, иначе потом будет дорого ее исправлять после того, как у нас выработаются вредные привычки. На самом деле исправить стиль кода очень сложно.Честно говоря, мой стиль кода не очень хорош.Я всегда использую какие-то простые переменные типа cur,pnt,node,u,v.Это тоже привычка играл acm тогда. , будет очень сложно изменить его на какое-то время. Так что каждый должен выработать хорошие привычки на ранней стадии, а плохие оставить мне в покое (большой туман).
спецификация пакета
Golang имеет множество спецификаций языка, охватывающих широкий спектр областей. прежде всегоспецификация пакета, для пакета его имя должно соответствовать каталогу, иметь осмысленное имя пакета и не давать некоторые имена, которые другие не могут понять. Такие как test, unit и не могут конфликтовать со стандартной библиотекой.
Во-вторых, когда мы импортируем пакеты, нам нужно обратить вниманиене используйте относительные пути, вместо этого следует использовать абсолютный путь.
// wrong
import "../../../repo"
// correct
import "github.com/repo/package
Конечно, мы можем установитьинструмент импорта, чтобы помочь нам автоматически импортировать пакеты. Однако при автоматическом импорте пакетов тоже будут ямки, особенно когда в каталоге два пакета с одинаковым именем, могут быть внесены ошибки, и на них нужно обращать внимание.
Рекомендации по стилю кода
Язык Go предусматривает, что мы должны использоватьстандарт горбаЧтобы назвать переменную, нельзя использовать _. В Go первая буква пишется с большой буквы, чтобы указать переменную в структуре или общедоступную функцию в пакете, если онаНижний регистр означает частный, этот момент требует особого внимания. Когда я впервые начал писать го, я к нему не привык, поэтому наступить на яму — обычное дело.
В голанге есть константы, а в голанге одни и те же константыВерблюжий корпус с большой буквы. Например, мы запускаем константу с именем app_env, которая представляет среду, в которой работает текущее приложение.Мы должны определить ее следующим образом:
const AppEnv = "env"
Другое дело, что дизайнеры ГолангаСчитает точки с запятой в конце строк излишними, поэтому в компилятор добавлена функция автоматического добавления точки с запятой в конце строки. Так что мы можем добавить его или нет, но, как правило, это не считается необходимым. Так что вообще говоря, за исключением тела цикла или условия решения, мы обычно не пишем точки с запятой. Конечно, есть особые случаи, например, когда вы хотите написать несколько операторов в одной строке:
var a int; var b float;
a = 3; b = 3.2;
Конечно ещеОбычно не рекомендуется, рекомендуется разделить его на несколько строк, что более красиво.
Другое дело, что в голангеВсе переменные и пакеты должны быть использованы, нельзя определять вещи, которые не используются, иначе будет сообщено об ошибке. Другими словами, это строго ограничивает нашу осторожность при написании кода. Вы не можете подать заявку на неиспользуемые переменные по своему желанию, таких ограничений нет в большинстве языков, но в golang есть ограничения, поэтому мы должны быть осторожны при написании кода.
Еще один момент касается фигурных скобок в голанге.Строго ограничить фигурные скобки для записи в текущей строкевместо новой строки.
// wrong
if expression
{
...
}
// correct
if expression {
...
}
Из приведенного выше примера мы также можем заметить, что в golangУсловие после if не заключено в скобки, то же самое, что и Python. Но если вы привыкли писать на java или C++, поначалу он может вам не подойти.
Последний момент заключается в том, что инструмент обнаружения спецификаций кода golang golint предусматриваетВсе заголовки функций и структур должны быть прокомментированы, и спецификация аннотаций также ограничена. Спецификация аннотацииимя плюс описание, если он не написан или не стандартизирован, код хотя и может работать, но не может пройти стандартное определение golint. Вообще говоря, среда разработки компании будет ограничена, и только код, прошедший проверку спецификации Golint, может быть представлен для выпуска.
// HelloWorld print hello world
func HelloWorld() {
fmt.Println("Hello World")
}
Еще один момент - это голангНеявные преобразования типов не поддерживаются, такие как int, int32 и int64, рассматриваются как разные типы. Если мы присвоим переменной int32 тип int, это вызовет ошибку и ее нужно преобразовать вручную. Это, конечно, увеличивает объем работы при кодировании, но также позволяет избежать многих проблем, вызванных различной точностью.
В дополнение к этому, golang также определяет спецификации для определений структур и обработки ошибок. Но для нас, новичков, это то, что нужно понять в данный момент, а с остальным содержанием можно ознакомиться после того, как мы встретимся с ним позже.
Язык накладывает строгие ограничения на стиль кода.Может быть немного больно для начинающих, потому что есть еще вещи, которые нужно помнить, мы должны не только выучить грамматику, но и выяснить нормы. Но когда мы познакомимся или поработаем, мы обнаружим, что это на самом деле хорошо. Для сценариев совместной работы нескольких человек будет очень полезно соблюдать одни и те же нормы.Повысьте эффективность обмена кодом и совместной работы. Если вы видели код других людей, чей стиль кодирования полностью отличается от вашего собственного, я полагаю, вы лучше поймете этот момент.
Суммировать
от строгости спецификации иобъектно-ориентированная кастрацияВ той мере, в какой это кажется, голанг не похож на новый язык, а имеет стиль языка старой школы прошлого века. Но в golang есть много новых функций, таких как возможностьЗначение функции возвращает несколько результатов, поддерживает анонимные функции и некоторые функции функционального программирования и т. д. На начальном этапе я тоже очень этому сопротивлялся, наверное потому, что на Python написано слишком много и я привык к динамическим языкам. Но благодаря глубокому пониманию этого языка я обнаружил все больше и больше мыслей и мудрости, лежащих в основе этих концепций дизайна, и постепенно изменил свое мнение о нем. Сегодня я больше не сомневаюсь, что это превосходный язык. популярность этих лет неспроста.
Еще один очень важный момент заключается в том, что, поскольку golang настолько уникален, он часто заставляет меня задуматься о том, какова его цель? Думая таким образом, а также обращаясь к некоторым материалам, вы можете найти много белых пятен в предыдущем мышлении. Когда я раньше изучал языки, я никогда не задумывался о том, почему дизайнеры языка разработали его таким образом, я просто следовал за тыквой, рисовал совок и изучал соответствующий контент в соответствии с этим. Помимо улучшения понимания самого языка, такое мышление также можетСпособность улучшить мышление и понимание проблемных сценариев, для инженеров последнее на самом деле важнее.
Конечно, эти легкие, о чем я говорю, бесполезны, вам нужно предварительно скринить, чтобы понять.
Я надеюсь, что каждый сможет почувствовать очарование голанга и сможет получить и вырасти в процессе, давай! Если вы чувствуете, что что-то приобрели, пожалуйста, нажмитесмотреть или пересылатьЧто ж, твое маленькое усилие много значит для меня.