Десятиминутный вводный курс по языку го

Go

在这里插入图片描述

Введение | Это статья для быстрого старта по основам грамматики го. При изучении этой статьи читатель по умолчанию успешно установил среду Golang. Если среда не установлена ​​успешно, вы можете самостоятельно установить Baidu.

Оригинальный адрес:Tickets.WeChat.QQ.com/Yes/Скажите на P0 в VV…

содержание

  • Установка среды
  • оператор вывода
  • Ключевые слова языка Go
  • тип
    • тип данных
    • Определения переменных
      • var определение ключевого слова
      • короткий режим
      • присвоение нескольких переменных
    • постоянный
    • йота ключевое слово
    • оператор
  • функция
  • Условные операторы и операторы цикла
    • Условные заявления
    • оператор цикла
  • данные
    • множество
    • нить
    • кусочек
      • инициализировать срез
      • Пример
    • Карта Словарь
    • структура структура
  • интерфейс
    • грамматика
    • Пример
  • Суммировать

Установка среды

Адрес установки:www.cnblogs.com/aaronthon/p/10587487.html

оператор вывода

Независимо от того, какой язык изучать, сначала выучите выходные предложения этого языка. Как говорится, если вы выведете «Hello, World!», значит, ваша запись удалась! ! !

package main

import "fmt"

func main() {
  fmt.Println("Hello, World!")
}

Затем изучите базовую грамматику «вместе», решите битву за десять минут и вперед! ! !

Ключевые слова языка Go

Во-первых, познакомьтесь с ключевыми словами в языке Go, и произведите впечатление в своем сердце, чтобы с ним были знакомы новички. Неважно, если вы не помните, я буду упоминать об этом снова и снова в приведенной ниже грамматике. Причина, по которой я поместил его здесь, заключается в том, чтобы вы взглянули и запомнили то, что видите.在这里插入图片描述

тип

тип данных

В языке программирования Go типы данных используются для объявления функций и переменных.

Появление типов данных заключается в разделении данных на данные с разным требуемым объемом памяти.Когда для программирования требуются большие данные, необходимо применять большой объем памяти, чтобы можно было полностью использовать память.

Язык Go имеет следующие типы данных по категориям:在这里插入图片描述

Определения переменных

В математических концепциях переменные представляют собой числа, которые не имеют фиксированного значения и могут изменяться. Но с точки зрения реализации компьютерной системы переменная — это одна или несколько частей памяти, используемых для хранения данных.

Как статически типизированный язык, переменные go всегда имеют фиксированный тип данных, а тип определяет длину и формат хранения переменной в памяти. Мы можем изменить только значение переменной, но не тип.

var определение ключевого слова

Ключевое слово var используется для определения переменных, и, в отличие от C, тип помещается после переменной. Если начальное значение указано явно, тип переменной может быть опущен и определен компилятором.

var X int // 自动初始化为零
var y = false // 自动推断为bool的类型

Несколько переменных могут быть определены одновременно, с одинаковыми или разными типами.

var x,y int
var a,b = 100, "abc"

короткий режим

При определении переменных в дополнение к ключевому слову var можно использовать более короткое определение переменной и синтаксис инициализации.

package main

import "fmt"

func main() {
  x := 10 // 使用 := 进行定义并初始化
  fmt.Println(x) // 输出语句 10
}

Некоторые ограничения использования короткого режима:

  • Переменные определяются при явной инициализации.

  • Невозможно указать тип данных.

  • Его можно использовать только внутри функций, а не в глобальных переменных.

присвоение нескольких переменных

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

package main

import "fmt"

func main(){
  x, y := 10, 20
  x, y = y+3, x+2  // 先计算等号右边值,然后再对x、y变量赋值
  fmt.Println(x, y) // 输出语句  结果为:23 12
}

постоянный

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

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

В языке го используйте ключевое слово const для определения констант.

const x, y int = 10, 20
const a,b = "迈莫coding", "欢迎小伙伴"

Пример:

package main

import "fmt"

const (
   a, b string = "迈莫coding", "欢迎小伙伴"
)

func main() {
   fmt.Println(a,b) // 迈莫coding 欢迎小伙伴
}

йота ключевое слово

В Go нет явного определения enum (перечисления), но тип перечисления можно реализовать с помощью идентификатора iota для реализации набора самоувеличивающихся постоянных значений.

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

Значения переменных a, b и c равны 0, 1 и 2 соответственно, потому что при использовании йоты для автоинкремента последующий автоинкремент увеличивается по порядку. Популярным моментом является то, что для каждой новой строки значение йоты увеличивается на единицу.

Если автоинкремент йоты прерывается на середине, рекавери должно отображаться, как показано ниже:

const (
  a = iota // 0
  b        // 1
  c = 100  // 100
  d        // 100 (与上一行常量值表达式一致)
  e = iota // 4 (恢复iota自增,计数包括c、d)
  f        // 5
)

оператор

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

package main
import "fmt"
func main() {
   var a int = 21
   var b int = 10
   var c int
   c = a + b
   fmt.Println(c) // 31
   c = a - b
   fmt.Println(c) // 11
   c = a / b
   fmt.Println(c) // 2
   c = a % b
   fmt.Println(c) // 1
   a++
   fmt.Println(a) // 22
   a=21   // 为了方便测试,a 这里重新赋值为 21
   a--
   fmt.Println(a) // 20
}

функция

Функция состоит в том, чтобы разложить сложный алгоритм процессы в ряд меньших задач, разделенных, легко поддерживать. Функция предназначена для того, чтобы быть относительно независимым, выполнить сегмент алгоритма инструкции, вывода или результаты, связанные с хранением, получая входные параметры. Следовательно, функция по-прежнему является основной единицей мультиплексирования и тестирования кода.

Ключевое слово func используется для определения функции.

package main

import "fmt"

// 定义 Write函数 返回值有两个,一个为name,一个age为
func Write() (name string, age int) {
   return "迈莫coding", 1
}

// 定义 Read函数
func Read(name string, age int) {
   fmt.Println(name, " 已经 ", age, " 岁了")
}

func main() {
   Read(Write()) // 迈莫coding  已经  1  岁了
}

Условные операторы и операторы цикла

Условные операторы

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

На следующей диаграмме показана структура условного оператора в языке программирования:

在这里插入图片描述

package main

import "fmt"

func main() {
  x := 3
  
  if x > 5 {
    fmt.Println("a")
  } else if x < 5 && x > 0 {
    fmt.Println("b")
  } else {
    fmt.Println("c")
  }
}

оператор цикла

Во многих практических задачах есть много регулярно повторяющихся операций, поэтому некоторые операторы необходимо повторять в программе.

Ниже представлена ​​блок-схема программы цикла на большинстве языков программирования:

在这里插入图片描述

package main

import "fmt"

func main() {
  for i := 0; i < 5; i++ {
    if i == 4 {
      continue
    } else if i == 5 {
      break
    }     
    fmt.Println(i)
  }
}

данные

множество

Язык Go предоставляет структуры данных типа массива.

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

在这里插入图片描述

package main

import "fmt"

func main() {
  var arr1 [4]int // 元素自动初始化为零
  fmt.Println(arr1) // [0 0 0 0]
  
  arr2 := [4]int{1,2} // 其他未初始化的元素为零
  fmt.Println(arr2) // [1 2 0 0]
  
  arr3 := [4]int{5, 3:10} // 可指定索引位置初始化
  fmt.Println(arr3) // [5 0 0 10]
  
  arr4 := [...]int{1,2,3} // 编译器按照初始化值数量确定数组长度
  fmt.Println(arr4) // [1 2 3]
  
  t := len(arr4) // 内置函数len(数组名称)表示数组的长度
  fmt.Println(t) // 3
}

нить

Строковое значение по умолчанию не nil, а "".

package main

import "fmt"

func main() {
  var str string
  str = "迈莫coding欢迎小伙伴"
  fmt.Println(str)
}

кусочек

Сами срезы не являются динамическими массивами или динамическими указателями. Просто он использует массив для внутреннего хранения данных.Когда длина массива достигает емкости массива, он будет динамически расширяться.

На простом языке функция нарезки аналогична коллекции List в Java, добавляя данные динамически. В отличие от массива (массива), длина которого фиксирована, длину данных нужно знать заранее.

инициализировать срез

x := make([]int, 1) // 通过make关键字进行slice初始化

Пример

package main

import "fmt"

func main() {
    // 方式一
    a := make([]int,5) // 初始化长度为5的slice,默认值为零
    for i := 0; i <5; i++ {
       a = append(a, i)
    }
    a = append(a, 6)
    fmt.Println(a) // [0 0 0 0 0 0 1 2 3 4 6] 

    // 方式二    
    var a []int
    for i := 0; i < 5; i++ {
       a = append(a, i)
    }
    fmt.Println(a) // [0 1 2 3 4]
}

Карта Словарь

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

Как неупорядоченный набор пар ключ-значение, значения ключа словаря должны быть типами данных, поддерживающими операторы равенства, такими как числа, строки, указатели, массивы, структуры и соответствующие типы интерфейса.

Функция словаря карт похожа на функцию сбора карт в Java.

Словари — это типы приложений, созданные с помощью функции make или оператора выражения инициализации.

package main

import "fmt"

func main() {
   // 定义 变量strMap
   var strMap map[int]string
   // 进行初始化
   strMap = make(map[int]string)
   
   // 给map 赋值
   for i := 0; i < 5; i++ {
      strMap[i]  = "迈莫coding"
   }
   
   // 打印出map值
   for k, v := range strMap{
      fmt.Println(k, ":", v)
   }
  
  // 打印出map 长度
  fmt.Println(len(strMap))   
}

структура структура

Структура (struct) упаковывает несколько последовательностей именованных полей разных типов в составной тип.

Имя поля должно быть уникальным и может быть заполнено «_» для поддержки использования собственных членов типа указателя. Свойства поля являются примитивными типами данных.

Изучив Java, вы можете провести аналогию: структура struct может быть аналогична классу в Java, атрибуты полей в структуре структуры могут быть аналогичны переменным-членам класса в Java, а методы структуры struct могут быть аналогичны к методам членов класса в Java.

Синтаксис структуры (struct) следующий:

type user struct {
  name string // 字段name 其数据类型为string
  age int // 字段age 其数据类型为int 
}

Пример:

package main

import "fmt"

type user struct {
   name string
   age  int
}

// 结构体user Read方法
func (u *user) Read() string {
   return fmt.Sprintf("%s 已经 %d 岁了", u.name, u.age)
}

func main() {
   // 初始化
   u := &user{
      name: "迈莫coding",
      age:  1,
   }
   fmt.Println(u.name, "已经", u.age, "岁了")
   // 调用结构体user的 Read方法
   fmt.Println(u.Read()) // 迈莫coding 已经 1 岁了
}

интерфейс

Интерфейс представляет вызывающий контракт и представляет собой набор объявлений нескольких методов.

Интерфейсы уменьшают зависимость типов, помогают уменьшить число видимых пользователю методов и маскируют детали внутренней структуры и реализации. В языке Go, пока набор методов целевого типа содержит все методы, объявленные интерфейсом, считается, что он реализует интерфейс, и явное объявление не требуется. Конечно, целевой тип может реализовывать несколько интерфейсов.

На простом языке интерфейс представляет собой набор объявлений нескольких методов.Если класс-структура реализует все методы интерфейса, это означает, что класс реализует указанный интерфейс.

грамматика

type user interface{
}

Пример

package main

import "fmt"

// 定义接口 包含公共方法
type user interface{
  talking()
}

// 定义一个struct类
type memo struct{
}

// 实现接口user中方法talking
func (m *memo) talking() {
  fmt.Println("迈莫coding欢迎您...")
}

func main() {
  mm := memo{}
  mm.talking()
}

Суммировать

Статья знакомит с базовой грамматикой языка Go, которая подходит для ознакомления новичкам, чтобы они могли быстро приступить к разработке проектов на языке Go, но в конце концов статья — это быстрый старт.

Статья также будет постоянно обновляться, и вы можете выполнить поиск «Maimo coding» в WeChat, чтобы прочитать ее как можно скорее. Это платформа, на которую каждый программист должен обращать внимание, делясь высококачественными статьями, большим заводским опытом, большим заводским опытом и помогая в интервью каждый день.