GO语言入门1---关键字、变量与运算符

目录


写一个简单的hello world

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    fmt.Println("hello go") // 对间隔不敏感
}

GO的关键字

这里写图片描述

这里写图片描述


定义变量和常量

数据类型

bool类型:true和false

数字类型:包括整数类型和浮点值类型

字符串类型:string,声明后不可改变

派生类型:指针类型、数组类型、结构类型、联合类型和函数类型、切片类型、接口类型
package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    var a int = 10
    var b float32 = 1.1
    var c byte = 10
    var d rune = -10
    var name string = "zeng"
    fmt.Println(a, b, c, d, name)
}

引用类型

特质slice、map和channel(先简单了解一下)
package main

import "fmt"

func main() {
    // slice
    s := make([]int, 0, 10)
    s = append(s, 10)
    fmt.Println(s)

    // map
    m := make(map[string] int)
    m["zeng"] = 99
    fmt.Println(m, m["zeng"])

    // 用函数new返回指针
    p := new(map[string] int)
    m1 := *p
    m1["zeng"] = 21 // 会出现错误,但仅仅给map分配了空间,并没有为key和value分配
    fmt.Println(m1, m1["zeng"])
}

变量

变量声明的四种形式

  • 指定变量类型
  • 根据值自定判定类型
  • 使用:=
  • 多变量声明
package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    var a int = 10 // 指定变量类型
    fmt.Println(a)
    var b = 9.9 // 指定变量类型
    fmt.Println(b)
    c:="zeng" // 指定变量类型
    fmt.Println(c)
    var d,e,f=1, 2, 3 // 多变量赋值方法
    fmt.Println(d, e, f)

    var (
        age int
        name string
    )
    age = 10
    name = "zeng"
    fmt.Println(age, name)

    _, x = 100, 200 // _代表站位,无法显示,读取和写入
    fmt.Println(x)
}

常量

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    const name="zeng"
    //name = "zeng2 // 提示错误
    const (
        index1=-1
        index2=0
        index3=1
    )
    const current_index = index1
    fmt.Println(current_index)
}

值类型和引用类型

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    var name string
    name = "zeng"
    fmt.Println(name, &name)
}

iota

用来统计一行代码中被调用的次数

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    const (
        a = iota // iota:特殊标量,可以认为是一个被编译器修改的常量
        b = iota
        c = iota
        d = iota
    )
    fmt.Println(a, b)
    fmt.Println(a, b, c, d)
    fmt.Println(a, b, c, d)
}

一些其他的

package main // 固定

import "fmt" // 导入fmt模块实现输入输出
import "unsafe"

func main() { // 大括号的位置是固定的
    const name="zeng"
    fmt.Println(len(name))
    fmt.Println(unsafe.Sizeof(name))

    var data uint32=10
    fmt.Println(unsafe.Sizeof(data)) // 占内存字节数
}

运算符

算术运算符

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    a:=10
    b:=7
    fmt.Println(a+b)
    fmt.Println(a-b)
    fmt.Println(a*b)
    fmt.Println(a/b)
    fmt.Println(a%b)
}

关系运算符

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    a:=10
    b:=7
    fmt.Println(a>b)
    fmt.Println(a<b)
    fmt.Println(a==b)
fmt.Println(a!=b)
    fmt.Println(a>=b)
    fmt.Println(a<=b)
}

逻辑运算符

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    a:=false
    b:=true
    fmt.Println(a && b)
    fmt.Println(a || b)
    fmt.Println(!(a || b))
}

位运算符

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    a:=7
    b:=5
    // fmt的格式化输出请参考https://www.cnblogs.com/yinzhengjie/p/7680829.html
    fmt.Printf("%b\r\n", a)//已经不是Println了
    fmt.Printf("%b\r\n", a&b)
}

赋值运算符

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    a:=7
    a++
    fmt.Println(a)
    a--
    fmt.Println(a)
    a^=2
    fmt.Println(a)
}

其他运算符

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    a:=7
    fmt.Println(&a) // 取地址运算符
    var ptr *int
    ptr = &a // 间接寻址运算符
    fmt.Println(ptr," ",*ptr)
}

GO语言类型转换

package main // 固定

import "fmt" // 导入fmt模块实现输入输出

func main() { // 大括号的位置是固定的
    a:=17
    b:=5
    fmt.Printf("%f\r\n", float32(a/b))
    fmt.Printf("%f\r\n", float32(a)/float32(b))
}


标准库strconv可以在不同进制(字符串)间转换
package main

import (
    "strconv"
    "fmt"
)

func main() {
    a,_ := strconv.ParseInt("0111", 2, 32)
    b,_ := strconv.ParseInt("0144", 8, 32)
    c,_ := strconv.ParseInt("64", 16, 32)
    fmt.Println(a, b, c)
}

猜你喜欢

转载自blog.csdn.net/zengraoli/article/details/82261626