1-基础语法学习

Go语言的基础语法

一、变量的定义

  • var a int 或者 var a = 2 (最普遍的使用,可以自动推断类型)
  • a, b, c := 3, 5, true (最简洁的使用,但只能在函数中使用,因为Go语言要求函数外的每一条语句必须以关键字开头,含义是初始化并使用)
  • 定义一个变量但是没有使用到它会报错

二、内建变量的类型

  • boot, string
  • (u)int(与使用的平台有关,在32位系统中是4个字节,在64位系统中是8字节,使用自动推导类型初始化一个整数,默认为int), (u)int8, (u)int16, (u)int32,(u)int64, uintptr(指针)
  • byte(8位), rune(字符型,与别的平台的char对应,32位)
  • float32, float64, complex64, complex128

三、强制类型转换

go语言的类型转换是强制的,否则编译将不会通过。类型转化的格式是将需要转化的数用括号括起来,前面声明需要最终转换的类型。示例:

c = int(math.Sqrt(float64(a*a + b*b)))

四、常量的定义

  • const filename = “abc.txt”
  • const的数值在不声明类型时,可作为各种类型使用,进行简单的文本替换功能,可不用做类型转换
  • go语言的常量不全部大写,因为go语言的大小写有其特殊的含义,所以常量也以普通的变量形式命名。
4.1特殊的常量:枚举类型
  • 普通枚举类型:直接用const加括号即可
  • 自增值枚举类型:iota,可以直接参与运算

五、条件分支语句

5.1if语句
  • 示例

    if v > 10 {
        pass;
    } else if v < 10 {
        pass;
    } else {
        pass;
    }
    
  • 特殊之处:条件语句没有括号

  • 可在if的条件里赋值,变量作用域就在这个if语句里

    if contents, err := ioutil.ReadFile(filename); err != nil {
        fmt.Println(err)
    } else{
        fmt.Printf("%s\n", contents)
    } //contents和err变量只在这个if的block语句中有效
    
5.2switch语句
  • switch会自动break,不需要每一个case后面跟break

  • switch后面可以不接表达式来使用

    示例:

    func grade(score int) string {
        swtich {
            case score < 60:
            	return "F"
            case score <80:
            	return "C"
        	case score < 90:
           		return "B"
            case score <=100:
           		return "A"
            default:
            	return "invalid parameter."
        }
    }
    

    六、循环语句

    for
    • for循环可以省略初始条件,省略递增条件

    • for循环后面什么表达式都没有就相当于无限循环,使用方便

      示例:

      for {
          fmt.Println("abc")
      }
      
    • for循环可以直接当作while循环来用,因此go语言中直接省略了while关键字

    七、函数

    go语言是函数式的编程语言,因此函数在其中占了很大的比重。

    示例:

    func div(a, b int) (int, int) {
        return a/b, a%b
    }
    

    函数可以返回一个值,也可以返回多个值。当返回多个值时,可以给返回值起名字,但是这种功能仅仅限制于较简单的函数使用,否则非常不便于阅读,否则无法知道返回值是在哪一行赋值。

    函数的参数、函数的返回值甚至函数体内也可以是函数。

    Go语言没有花哨的λ表达式,只有简简单单的匿名函数。示例:

    fmt.Println(apply(
        func(a int, b int)) int{
        return int(math.Pow(
            float64(a), float64(b)))
    }, 3, 4)
    
    参数

    go语言没有默认参数和函数重载等,仅有可变参数列表,示例:

    func sum(numbers ...int) int { //...int就代表有多个numbers
        s := 0
        for i := range number {
            s += numbers[i]
        }
        return s
    }
    

    八、指针

    示例:

    var a int = 2
    var pa *int = &a
    *pa = 3
    fmt.Println(a)
    

    go语言的指针不能参与运算

    参数传递
    • Go语言只有值传递一种方式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值