zoukankan      html  css  js  c++  java
  • go语言学习--基础篇(2)

    一,go的数据类型和操作符

          1,布尔类型

                go语言中bool 类型只有两个值:true和false;不像其它语言中0和1 也可以表示布尔类型,这在go语言中是不允许的,另外定义一个bool 类型,默认值为false

                a. var b bool (默认为false)

                b. var b bool = true

                c. var b = true

          2, 操作符

                a. == 等于

                b. != 不等于

                c. !b 取反操作

               d. && 与运算

               e. || 或运算

               布尔类型格式化输出占位符 %t

         3,整数和浮点数类型

               a. int8,int16,int32,int64 (有符号整数类型) 其中数字表示多少位

               b. uint8,uint16,uint32,unit64 (无符号整数类型)

               c. int 和 uint, 和操作系统平台有关

               d. float32 和float64浮点数

          注意:go 语言是强类型语言,其实int类型,不通字节之间也不能直接转化,例如: int8类型的变量,不能直接赋值int16

          所有的整数初始化为0,所有的浮点数初始化为0.0,布尔类型初始化为false

          4,复数类型

               a,两种形式:complex64和complex128

               b,var c complex64 = 5 +10i

               c,内置函数complex(re,im)构造一个复数

              d,万能输出占位符:%v

          5,位操作

              a,与操作:&

                1 & 1 = 1;1 & 0 =0; 0 & 1 = 0;0 & 0 =0

              b,或操作

                1 | 1 = 1;1 | 0 =1;0 | 1 =1;0 & 0 =0

              c, 异或操作

                1 ^1 = 0;1 |0 =1;0 |1 =1; 0 & 0 =1

          6,位操作符

              a. 左移 <<    1<< 10 = 1024

              b. 右移 >>   1024 >> 10 = 1

          7,操作符

              a. 逻辑操作符, ==,!=,<,<=,>=

              b. 算数操作符, +,-,*,、,%

    二,go语言代码规范

           1,在go 语言中任何一个代码文件隶属于一个包

           2,import  关键字,引用其他包:

               import("fmt")

               导入多个包
               import (

                     "fmt”

                    “os”

                )

             3,同一个包的函数调用,直接调用即可,要是导入其他包,需要加上包的名字+点+函数名称,例如 calc.add,calc 为报名,add 为其中的一个函数

             4,包访问控制规则:

                   a.函数名或者变量开头字母大写,意味着这个函数或者变量,可以在其它源码中导入

                   b.函数名或者变量开头字符小写,意味着这个函数或者变量,不可以导出,为私有属性

            5,每个源码文件可以含一个init 函数,这个init 函数自动被go运行的框架调用,示例      

    package main
    
    import (
    
         "fmt"
    )
    
    func init(){                                  
    fmt.Println("init called") } func main() { fmt.Println("main called") #先输出init called,最后输出main called }

            6. 包的只初始化,不引用,在go 语言,一般情况下,一个包不引用,是不可以导入的,否则会编译出错,但是也有一种情况是可以导入包的,进行初始化,即在包名前加_

            import (

                 _"add"

            )

     三,常量

             1. 常量使用const修饰,而且永远只读,不能修改

             2. const只能修饰boolean,number(int相关类型,浮点数,complex)和string

             3. const的定义 const identifier [type] = value

             4. 多个值定义  const(

                                        a = 1

                                        b = 2

                                        c = 3

                                      )

             5. iota 字const 中的应用 iota 初始值为0,以后定义参数,如果附其它值,按顺序加1,遇到新的const iota 的值重置     

    package main
    
    import (
    
      "fmt"
    
    )
    
    const(
    
    	a = iota
    	b
    	c
    )
    
    const (
    
    	d = iota
    	e
    )
    
    func main(){
    
    	fmt.Printf("%d,%d,%d,%d,%d",a,b,c,d,e)
    }
    
    输出为:0,1,2,0,1
    

               6,在const 赋值中,如果某个变量没有赋值,那么他的值默认为上一个表达式的值

    四,go语言中的内置包        

         1.time

    func main() {
    
          now := time.Now()                              #获取当前时间
          second :=now.Unix()                            #将当前时间转化成时间戳
    
    }
    

       2, os

         a. 获取主机名

    func main() {
    
        name,ret := os.Hostname()
        fmt.Printf("%s %v",name.err)
    }
    

        b. 获取GoPATH

    func main(){
            val := os.Getenv("PATH")             #os.Getenv 加变量参数
            fmt.Printf("%s
    ",val)
    
    }
    

     五,字符串

       1,字符串声明

             a. var b =string

             b. var b = "hello"

             c. var b string = "hello"

       2.  go 语言的引号

           a. 双引号,“”,可以包含控制字符

           b. 反引号,··,反引号字符都是原样输出

       3. 字符串操作

            a. 长度: len(str)

               示例

    func StrOperator() {
    
          str := "hello world"
          for index,val := range str {
    
             fmt.Printf("len:%d
    ",len(str))
           }
    }
    

            b. 拼接: +,fmt.Sprintf

                 str2 :=str + "world"

            c. 分割: string.Split,返回一个数组

    str="hello world"
    result := strings.Split(str," ")         #已空格分割
    fmt.Printf("result"%v
    ",result)         #返回结果为数组

            d. 包含: string.Contains

    str="hello world"
    result := strings.Contains(str,"he")         
    fmt.Printf("result"%v
    ",result)         #返回true或者false
    

            e. 前缀或后缀判断: strings.HasPrefix,strings.HasSuffix

    str = "baidu.com"
    if ret := strings.HasPrefix(str4,"http://"); ret == false {
      
          str4 = "http://" + str
      
    }
    

            f. 子串出现的位置: string.Index(),strings.Lastlndex()

            g. join 操作: string.Join(a[]string,Sep string)

    六,流控制语句

          1. if 语句

             if conditionl {

                 // do something

             } else if  condition2 {

                // do something

             } else {

            }

       2. if  语法糖

            if b:=100;b> 200 {

               // do something   

            }

        3. for  循环

            a      初始化  condition 修改

             for init;condition;modify { }

            b  无限循环

            for  {   }

            for true {   }

            c  for 遍历字符串,数组,切片

             for  index,val :=range str {

             }

  • 相关阅读:
    Sightseeing,题解
    A Simple Problem,题解
    城池攻占,题解
    传递,题解
    How many ways??,题解
    Least Cost Bracket Sequence,题解
    Evacuation,题解
    Tallest Cow,题解
    容易题,题解
    无题Ⅱ,题解
  • 原文地址:https://www.cnblogs.com/system-public/p/7993534.html
Copyright © 2011-2022 走看看