go语言学习入门



  • a -> apple
    b -> bananago语言学习笔记

    语法特性

    package main  //代表程序可以独立运行 有些类似于java的主类 整个程序的入口,每个应用程序都包含一个main的包
    import "fmt" //程序最先执行的函数 每一个可执行程序都必须包含main 也是程序的入口
    func main() { 
    	fmt.Println()
    }
    
    • fmt.Println() 以大写字母开头的标识符代表可以被外部包先import后再引用 类似于java的public 而小写字母开头的标识符则不能 类似于private

    • 变量声明

      var 变量名 type = value //第一种
      变量名 := 1 //:=声明语句
      var vname1, vname2, vname3 = v1, v2, v3 //也可以像python一样自动判断变量类型
      
    • 值类型和引用类型

      像int string 都属于值类型

      可以通过&i 来获取变量i 的内存地址 值类型的变量值储存在栈中 可能每次获取的地址不一样

      复杂的数据通常使用多个字 这些数据一般使用引用类型保存

      一个引用类型的变量r1存储的是r1的值所在的内存地址 或者内存中第一个字所在的位置

      这个内存地址称之为 指针

    • 声明了局部变量 但是没有在相同的代码块中使用 会编译错误 草

    • 常量const声明可以枚举

      const (
      Unknown = 0
      Female = 1
      Male = 2
      c = unsafe.Sizeof(a) // 可以用内置函数赋值
      index=iota  // iota用来计数const枚举中的常量的数量 每次增加一个常量 iota就会+1
      )
      
    • select 条件语句 类似于用于通信的switch语句 每个case必须是一个通信操作 要么是发送要么是接收

      select {
      	case communication clause :
      		statement(s);
      	case communication clause :
      		statement(s);
      	default:
      		statement(s);
      }
      

      每一个case都必须是一个通信

      所有channel的表达式都会被求值

      所有被发送的表达式都会被求值

      如果任意某个通信可以进行 就会执行 其他忽略

      如果有多个case都可以运行 就随机选一个 其他不会执行

    • go语言程序最少有一个main()函数

      func 函数名([parameter_list]) [return_type] {
      函数体
      }
      
    • 方法声明

      type Circle struct{
      	radius float64
      } //类似于oo的class声明
      func (c Circle) getArea() float64{ //将c circle作为形参传入到方法中
      	return c.radius*c.radius*3.14
      } 
      
    • 数组

      var 变量名 [size] type
      var balance = [5]float32{1000,2,3,4,7}
      
    • 结构体

      type 结构体名 struct{
      	member def
      	member def
      }
      变量声明
      变量名 := 结构体名{var1,var2,var3,....}
      变量名 := 结构体名{key:var1,key:var2}
      
    • slice 切片

      var 变量名 []type // 用未指定大小的数组来定义切片
      var slice1 []type = make([]type,len)
      s :=[] int {1,2,3 } 切片初始化
      

      切片和数组的区别就是在初始化上 切片初始化[],数组传参数[size]

    • range

      for a,num := range nums{
      		sum += num
      		fmt.Printf("%d : %d\n",a,num)
      	}
      output:
      0 : 1
      1 : 2
      2 : 3
      3 : 4
      kvs := map[string] string{
      	"a":"apple",
      	"b":"banana"}
      for key,value := range kvs{
      	fmt.Printf("%s -> %s\n",key,value)
      }
      output:
      a -> apple
      b -> banana
      
    • 接口

      
      


  • 🔥🔥🔥


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待