Go入门学习二 | 青训营

75 阅读3分钟

数据类型:注意,与C++不同,不需要初始化,数值类型默认值为0,布尔类型默认值false,字符串为空字符串。

  • 整形 int8\16\32\64,无符号uint8\16\32\64(默认int\uint为8位)

  • 浮点型float32\64

  • 复数complex64\128

  • 布尔型bool

  • 字符串型string

变量与常量

  • 同一行声明多个变量:var a,b,c int =1,2,3或者a,b:=1,2

  • 全局变量声明必须使用var关键词,局部变量可以省略;

  • 变量可见性规则:大写字母开头的变量可以导出,在其他包中可以读取,是共有变量; 小写字母开头则不可以,是私有变量。

  • 特殊变量iota

    //普通使用:

    (iota在关键字const出现时被重置为0;const中每新增一行常量声明,iota会被重置一次)

      const a = iota
      const (
      b = iota
      c = iota
      )
      输出a,b,c为0,0,1
    

    //插队使用

    (go中,_下划线代表”垃圾桶”,本代码中,iota本来要自增成1,但有垃圾桶存在,被“收纳”了,因此轮到c定义时候会使用iota下一个自增的2的数值了)

      const a = iota
      const (
      b = iota
      _
      c = iota
      )
      输出a,b,c为0,0,2
    

    //隐式使用

    (当b、c为赋值时候,会隐式调用已存在的表达式,即b对应的iota=1代入a=iota*2,得到2,同理c=4)

      const (
      a= iota*2
      b
      c
      )
      输出a,b,c为0,2,4
    

    //单行使用

    (同一行,多向量定义,iota一直为同一个数,下一行继续加一;注意,第一行有两个变量,那么此后若采用隐式定义,必须同样有两个变量)

      const (
      a,b= iota,iota*2
      b,c
      )
      输出a,b,c,d为0,0,1,2
    

运算符:略

控制语句:和C++比较像。注意,

if a>0{
}//if语句的条件没有括号!!!


switch 3 {
case 1:
case 2:
default:
}
//switch的条件没有括号!!!不需要break,遇到符合条件的执行后自动退出!!!


for I:=0;I<10;I++{
}//for条件同样没有括号!!!


a:=[]string{“a”,”b”,”c”}
for key,value:=range a{
Println(key)
Println(value)
}
//键值对(类似C++哈希表)的打印方法

go派生类型学习

1、函数

这个函数与C++很像,但又有go的风格:

package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}

func main() {
a, b := swap("Google", "Runoob")
fmt.Println(a, b)
}

大概就是这样,学了前面的东西之后,看顺眼了许多

注意:函数返回值可以有多个;值传递不会改变结果,需要使用引用传递

简易函数:

package main
import (
"fmt"
"math"
)

func main(){
/* 声明函数变量 */
getSquareRoot := func(x float64) float64 {
return math.Sqrt(x)
}

/* 使用函数 */
fmt.Println(getSquareRoot(9))
}

还有匿名函数之类的,用到再看吧

2、数组

var numbers [5]int//定义int数组,大小为5,默认为0
var numbers = [5]int{1, 2, 3, 4, 5}//直接赋值
balance := [5]float32{1:2.0,3:7.0}// 将索引为 1 和 3 的元素初始化

3、指针

var ip *int //定义指针
nil//go中代表空指针
var ptr [3]*int;//大小为3的整形指针数组

4、结构体

type Books struct {
title string
author string
subject string
book_id int
}


定义:
var Book1 Books = Books{"DAYDAYUP", "Tung", "STUDY", 01}

或者是:
var Book1 Books = Books{title: "DAYDAYUP", author: "Tung", subject: "STUDY", book_id: 01}