Go 开发基础入门——1

请关注我的个人博客

Go开发入门

变量的定义,赋值

变量声明:Go的变量名首字母不能为数字

  • 未初始化的变量声明:

    var 变量名 变量类型
    var a int               // 声明 int 类型的变量
    var b [10] int          // 声明 int 类型数组
    var c []int             // 声明 int 类型的切片 [] 内赋初值是数组,不赋值是切片
    var d *int              // 声明 int 类型的指针
    打印结果为
    
    //a={0},b={[0 0 0 0 0 0 0 0 0 0]},c={[]},d={<nil>}
    
    那么未初始化的变量默认值为:
    
    整型和浮点型变量: 0
    字符串: 0
    布尔: false
    函数,指针: nil
  • 初始化的变量声明:

    var 变量名 变量类型 = 表达式
    var a int = 10
    
    //编译器自动推断格式
    var 变量名 = 表达式
    
    //简短声明格式(短变量声明格式)
    变量名 := 表达式
    
    := 可以高效的创建新变量,在内存中开辟空间
    var 省略
    编译器自动推断类型
    声明变量首选这种形式
    只能用在函数体内,不能作为全局变量来声明
    变量名不能是被定义过的,不然会报错
  • 变量多重赋值
    go可以进行多变量赋值,变量与变量之间逗号隔开
    a, b, c, d := 1, 2, true, "def"
    fmt.Printf("a={%d},b={%d},c={%v},d={%v} \n", a, b, c, d)

    a, b = b, a // a,b互换位置
  • 匿名变量

    主要用于函数返回值,返回我们需要的字段

数据类型

  • 布尔型
    布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
  • 数字类型
    整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
  • 字符串类型:
    字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
  • 派生类型:
    包括:
    (a) 指针类型(Pointer)
    (b) 数组类型
    (c) 结构化类型(struct)
    (d) Channel 类型
    (e) 函数类型
    (f) 切片类型
    (g) 接口类型(interface)
    (h) Map 类型

更详细的可以参考这篇博文,写的非常详细

格式化输出语句

  • 通用

    %v value,值的默认表示
    %+v 类似%v,但输出结构体时会添加字段名
    %#v 值的 Go 语法表示
    %T 值的数据类型Go语法表示,如: int , string等
  • 布尔

    %t true或false
  • 整数

    %b     二进制表示 
    %c     相应Unicode码点所表示的字符 
    %d     十进制表示 
    %8d    整形长度为8,不足8则在数值前补空格 超出以实际为准
    %08d   数字长度是8,不足8位的,数字前补0 超出以实际为准
    %o     八进制表示 
    %q     单引号围绕的字符字面值,由Go语法安全地转义 
    %x     十六进制表示,字母形式为小写 a-f 
    %X     十六进制表示,字母形式为大写 A-F 
    %U     Unicode格式:U+1234,等同于 "U+%04X"
    
  • 浮点,复数

    %b     无小数部分的,指数为二的幂的科学计数法,与 strconv.FormatFloat中的 'b' 转换格式一致。例如 -123456p-78 
    %e     科学计数法,例如 -1234.456e+78 
    %E     科学计数法,例如 -1234.456E+78 
    %f     有小数点而无指数,例如 123.456 
    %g     根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的0)输出 
    %G     根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的0)输出
  • 字符串和bytes的slice表示:

    %q     双引号围绕的字符串,由Go语法安全地转义 
    %x     十六进制,小写字母,每字节两个字符 
    %X     十六进制,大写字母,每字节两个字符
  • 指针:

    %p     十六进制表示,前缀 0x
    这里没有 'u' 标记。若整数为无符号类型,他们就会被打印成无符号的。类似地,这里也不需要指定操作数的大小(int8,int64)。
    
    对于%v来说默认的格式是:
    bool:                    %t 
    int, int8 etc.:          %d 
    uint, uint8 etc.:        %d, %x if printed with %#v
    float32, complex64, etc: %g
    string:                  %s
    chan:                    %p 
    pointer:                 %p
    由此可以看出,默认的输出格式可以使用%v进行指定,除非输出其他与默认不同的格式,否则都可以使用%v进行替代(但是不推荐使用)
  • 对于复合对象:

    里面的元素使用如下规则进行打印:
    struct:            {field0 field1 ...} 
    array, slice:      [elem0 elem1 ...] 
    maps:              map[key1:value1 key2:value2] 
    pointer to above:  &{}, &[], &map[]
  • 宽度和精度:

    宽度是在%之后的值,如果没有指定,则使用该值的默认值,精度是跟在宽度之后的值,如果没有指定,也是使用要打印的值的默认精度.例如:%9.2f,宽度9,精度2
    
    %f:      default width, default precision 
    %9f      width 9, default precision 
    %.2f     default width, precision 2 
    %9.2f    width 9, precision 2 
    %9.f     width 9, precision 0

这里有一些练习

弟弟从事java开发,学习go纯属个人爱好,喜欢go的语法和特点,点击这里移步我的个人博客

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!