Обмен технологиями

Введение в язык Go (1)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Модули Go зависят от механизма поиска пакетов.
  • Загруженные сторонние зависимости хранятся в $GOPATH/pkg/mod Вниз
  • Исполняемый файл, созданный go install, хранится в $GOPATH/binВниз
  • Зависит от порядка поиска:
    • Список работ
    • $GOPATH/пакет/мод
    • $GOPATH/источник

1. Основы языка Go

1.Идентификаторы и ключевые слова

1.1 Метод именования

Именование переменных, констант, пользовательских типов, пакетов и функций go должно соответствовать следующим правилам:

Первым символом может быть任意Unicode字符или下划线

Частями, отличными от первого символа, могут быть символы Юникода, символы подчеркивания или цифры.

Длина имени не ограничена

Теоретически в названии могут быть китайские иероглифы или даже все китайские иероглифы, но на практике этого не делайте.

1.2 Ключевые слова
перерывпо умолчаниюфункцинтерфейсвыбирать
случайотложитьидтикартаструктура
тянещеидти купаковкавыключатель
константаеслидиапазонтиппродолжать
дляИмпортироватьвозвращатьсяПроваливатьсявар
1.3 Зарезервированные слова

•постоянный

true false iota nil

• тип данных

int int8 int16 int32 int64

uint uint8 uint16 uint32 uint64

float32 float64

complex128 complex64

byte rune string

bool error uintptr

• функция

make len cap new append copy

close delete complex real imag panic recover

1.4 Переменные
1.4.1 Типы переменных
типТипы переменных Gofmt-выход
целое числоint int8 int16 int32 int64 uint uint8 uint16 uint32 uint64
плавающая запятаяfloat32 float64%е %г %е
множественное числоcomplex128 complex64
логическое значениеbool
указательuintptr
Цитироватьmap slice channel
байтbyte
любой персонажrune
нитьstring
ошибкаerror
1.4.2 Инициализация переменных
  • Если после объявления он не инициализируется явно, числовой тип инициализируется значением O, строковый тип инициализируется пустой строкой, а логический тип инициализируется значением false.

    Ссылочные типы, функции, указатели и интерфейсы инициализируются нулем.

    • var a string="китай"
    • переменная а,б целая=3,7
    • var a="china", вывод типа
    • вар а,б=“китай”, 7
  • Переменные (неглобальные переменные) внутри функций могут быть объявлены и инициализированы с помощью: =

    • а:=3
  • Подчеркивание указывает на анонимную переменную.

    • _=2+4
  • Анонимные переменные не занимают пространство имен и не выделяют память, поэтому их можно использовать повторно.

1,5 константы

Константам должно быть присвоено значение при их определении, и их значение не может быть изменено во время работы программы.

const PI float32=3.14

const(
	PI=3.14
	E=2.71
)

const(
  a=100
  b	//100,跟上一行的值相同
  c	//100,跟上一行的值相同
)

const(
	a = iota	//0
  b					//1
  c					//2
  d					//3
)

const(
	a = iota	//0
  b					//1
  _					//2
  d					//3
)

const(
	a = iota	//0
  b	= 30		//30
  c	= iota	//2
  d					//3
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
1.6 Литералы

Литерал: имя переменной не отображается, но значение отображается непосредственно.Литералы базовых типов эквивалентны константам.

Различные типы данных нельзя сравнивать, за исключением литералов.

fmt.Printf("9tn"04 ==4.00//用到了整型字面量和浮点型字面量
fmt.Printf("%vn".4i//虚数字面量0.4i
fmt.Printf("%tn", "u4f17'=='//Unicode和rune字面量
fmt.Printf("Hello nWorldn!n"//字符串字面量
  • 1
  • 2
  • 3
  • 4
1.7 Область действия переменных
глобальные переменные
var (
  A=3	//全局变量,大写字母开头,所有地方都可以访问,跨package访问时需要带上package名称
	b=4	//全局变量,小写字母开头,本package内都可以访问
  • 1
  • 2
  • 3
  • 4
локальные переменные
func fool{
	b:=5 //局部变量,仅本函数内可以访问。内部声明的变量可以跟外部声明的变量有冲突,以内部的为准
  
	{
  	b:=6	//仅小圈定的作用域内可以访问,可以跟外部的变量有冲突
	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
1.8 Комментарии и годок
1.8.1 Форма комментариев
  • Однострочные комментарии.Начните с //
  • Многострочные комментарии. Несколько последовательных строк начинаются с // или используйте /* перед абзацем и */ в конце абзаца.
  • Между многострочными комментариями не может быть пустых строк.
  • ПРИМЕЧАНИЕ. Привлекает внимание. TODO: требует оптимизации в будущем. Устарело: настоятельно рекомендуется не использовать переменные и функции.
  • Вы можете написать код go, добавив отступ перед строкой комментария.
1.8.2 Расположение комментариев
  • Комментарии к пакету. Вышеуказанный пакет xxx. Пакету необходимо писать комментарии к пакету только в одном месте, обычно в специальном doc.go.

    Есть только одна строка packagexxx и комментарии к пакету.

  • Структурные комментарии.структура типа xxx выше

  • Комментарии к функциям.выше функции xxx()

  • Комментарии к строке.выше или справа от строки

1.8.3 перейти к документу
  • go doc — это команда, которая идет вместе с go
  • go doc вступительный класс/util
1.8.4 годок
  • godoc может экспортировать веб-версию документа аннотаций для кода проекта.
    • Вам нужно сначала установить go golang.org/x/tools/cmd/godoc
    • Запустите http:godoc -http=:6060.
    • Используйте браузер, чтобы посетить: http://127.0.0.1:6060/pkg/go-course/entrance class.