zoukankan      html  css  js  c++  java
  • Go 语言基础语法

    Go 语言基础语法

    1.字符串连接

    Go 语言的字符串可以通过 + 实现:

    实例

    package main
    import "fmt"
    func main() {
        fmt.Println("Google" + "Runoob")
    }

    以上实例输出结果为:

    GoogleRunoob

    Go 语言的空格

    Go 语言中变量的声明必须使用空格隔开,如:

    var age int;

    语句中适当使用空格能让程序更易阅读。

    无空格:

    fruit=apples+oranges;

    在变量与运算符间加入空格,程序看起来更加美观,如:

    fruit = apples + oranges;

    Go语言数据类型

    布尔型
    布尔型的值只可以是常量 true 或者 false。一个简单的例子:

    var b bool = true

    Go 语言变量

    var indentifier type

    可以一次声明多个变量

    var identifier1 , identifier2 type 

    例子

    fun main(){

      var a string = "runoob"

      fmt.Println(a)

      var b,c int = 1,2

      fmt.println(b,c)

    }

    实际输出

    Runoob 1 2

    变量声明

    第一种,指定变量类型,如果没有初始化,则变量默认为零值

    实例

    package main
    import "fmt"
    func main() {

        // 声明一个变量并初始化
        var a = "RUNOOB"
        fmt.Println(a)

        // 没有初始化就为零值
        var b int
        fmt.Println(b)

        // bool 零值为 false
        var c bool
        fmt.Println(c)
    }

    第二种,根据值自行判定变量类型。

    实例

    package main
    import "fmt"
    func main() {
        var d = true
        fmt.Println(d)
    }
    如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误,例如下面这个例子当中的变量 a:

    如果你声明了一个局部变量却没有在相同的代码块中使用它,同样会得到编译错误,例如下面这个例子当中的变量 a:

    实例

    package main

    import "fmt"

    func main() {
       var a string = "abc"
       fmt.Println("hello, world")
    }

    尝试编译这段代码将得到错误 a declared and not used

    此外,单纯地给 a 赋值也是不够的,这个值必须被使用,所以使用

    fmt.Println("hello, world", a)

    Go 语言常量

    • 显式类型定义: const b string = "abc"
    • 隐式类型定义: const b = "abc"
    多个相同类型的声明可以简写为
    const c_name1, c_name2 = value1, value2
    以下实例演示了常量的应用:

    实例

    package main

    import "fmt"

    func main() {
       const LENGTH int = 10
       const WIDTH int = 5  
       var area int
       const a, b, c = 1, false, "str" //多重赋值

       area = LENGTH * WIDTH
       fmt.Printf("面积为 : %d", area)
       println()
       println(a, b, c)  
    }
    常量还可以用作枚举:
    const(
      Unknown = 0
      Female = 1
      Male =2
    )
    数字 0、1 和 2 分别代表未知性别、女性和男性。
     
    常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过

    实例

    package main

    import "unsafe"

    const (

      a = "123"

      b = len(a)

       c =unsafe.Sizeof(a)

    )

    func main(){
        println(a, b, c)
    }

    以上实例运行结果为:

    abc 3 16

    Go 语言运算符

    • 算术运算符
    • 关系运算符
    • 逻辑运算符
    • 位运算符
    • 赋值运算符
    • 其他运算符

    以下实例演示了各个算术运算符的用法:

    fun main(){

      var a int = 21

      var b int = 10

      var c int 

      c = a + b
       fmt.Printf("第一行 - c 的值为 %d ", c )
       c = a - b
       fmt.Printf("第二行 - c 的值为 %d ", c )
       c = a * b
       fmt.Printf("第三行 - c 的值为 %d ", c )
       c = a / b
       fmt.Printf("第四行 - c 的值为 %d ", c )
       c = a % b
       fmt.Printf("第五行 - c 的值为 %d ", c )
       a++
       fmt.Printf("第六行 - a 的值为 %d ", a )
       a=21   // 为了方便测试,a 这里重新赋值为 21
       a--
       fmt.Printf("第七行 - a 的值为 %d ", a )

    }

    Go 语言条件语句

    if 语句

    func main(){

      var a int = 10

      if a < 20{

      fmt.Printf("a小于 20 ")

    }

    }

    //注意, 和java的区别,一般情况下,Go不要加如()

    Go 语言循环语句

    Go 语言 for 循环

    Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。

    和 C 语言的 for 一样:

    1.

    for init; condition; post { }

    2.

    for condition { }
    3.
    for { }

    for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下

    for key, value := range oldMap {
        newMap[key] = value
    }

    实际例子
    计算 1 到 10 的数字之和:
    package main

    import "fmt"

    func main() {
            sum := 0
            for i := 0; i <= 10; i++ {
                    sum += i
            }
            fmt.Println(sum)
    }

    init 和 post 参数是可选的,我们可以直接省略它,类似 While 语句。

    以下实例在 sum 小于 10 的时候计算 sum 自相加后的值:

    package main

    import "fmt"

    func main() {
            sum := 1
            for ; sum <= 10; {
                    sum += sum
            }
            fmt.Println(sum)

            // 这样写也可以,更像 While 语句形式
            for sum <= 10{
                    sum += sum
            }
            fmt.Println(sum)
    }

    无限循环:

    package main

    import "fmt"

    func main() {
            sum := 0
            for {
                sum++ // 无限循环下去
            }
            fmt.Println(sum) // 无法输出
    }

    For-each range 循环

    这种格式的循环可以对字符串、数组、切片等进行迭代输出元素。

    package main
    import "fmt"

    func main() {
            strings := []string{"google", "runoob"}
            for i, s := range strings {
                    fmt.Println(i, s)
            }


            numbers := [6]int{1, 2, 3, 5}
            for i,x:= range numbers {
                    fmt.Printf("第 %d 位 x 的值 = %d ", i,x)
            }  
    }

    以上实例运行输出结果为:

    0 google
    1 runoob
     0  x 的值 = 1
     1  x 的值 = 2
     2  x 的值 = 3
     3  x 的值 = 5
     4  x 的值 = 0
     5  x 的值 = 0

    Go 语言函数

    Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。

    函数定义

    Go 语言函数定义格式如下:

    func function_name( [parameter list] ) [return_types] {
       函数体
    }
    例子
    以下实例为 max() 函数的代码,该函数传入两个整型参数 num1 和 num2,并返回这两个参数的最大值
    code
    func max(a ,b int) int{
      var result int
      if (num1>num2){
      result = num1
    }
    }

    函数调用

    函数返回多个值

    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)
    }

    Go 语言变量作用域

    • 函数内定义的变量称为局部变量
    • 函数外定义的变量称为全局变量
    • 函数定义中的变量称为形式参数
    /* 函数定义-两数相加 */
    func sum(a, b int) int {
       fmt.Printf("sum() 函数中 a = %d ",  a);
       fmt.Printf("sum() 函数中 b = %d ",  b);

       return a + b;
    }

    main()函数中 a = 10
    sum() 函数中 a = 10
    sum() 函数中 b = 20
    main()函数中 c = 30

    初始化局部和全局变量

    Go 语言数组

    var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
    实例
    package main

    import "fmt"

    func main() {
       var n [10]int /* n 是一个长度为 10 的数组 */
       var i,j int

       /* 为数组 n 初始化元素 */        
       for i = 0; i < 10; i++ {
          n[i] = i + 100 /* 设置元素为 i + 100 */
       }

       /* 输出每个数组元素的值 */
       for j = 0; j < 10; j++ {
          fmt.Printf("Element[%d] = %d ", j, n[j] )
       }
    }


  • 相关阅读:
    C++ Primer读书笔记
    谨慎使用多线程中的fork
    C++中多线程与Singleton的那些事儿
    浅谈指针的比较
    条件变量的陷阱与思考
    2014年终总结
    循环队列的一种实现模型
    react-native使用jest、enzyme进行单元测试
    富文本编辑器开发原理
    模拟实现单元测试中的异步测试
  • 原文地址:https://www.cnblogs.com/cxy2020/p/14274028.html
Copyright © 2011-2022 走看看