Go(day2)

Go开发

GO1.5之后, 底层都是用go写的,所以1.5后都需要安装go编译器

Go是强类型语,不同类型相加以及赋值是不允许的,所有的整数 初始化为0,所有浮点数初始为0.0,布尔类型初始化为false

  1. 如何一个代码文件最小单位都是包

  2. 各包直接最好别重名,负责会覆盖

  3. 只能导入库文件,不能导入另外一个包的可执行文件,也就是带有package main 开头的包

    1. 如果需要导入另外一个包,那这个被导入包的开头package 可以随意写

  4. 如果是同一包里面的函数,直接调用即可,无需import

    1. 需注意的是: 在运行go run 会报错, 需要go build 或者go install 后执行编译后的程序,不会报错

    2. 不同包中函数,通过包名+点+函数名进行调用

  5. 在开发go的时候,如果写入无用的代码(也就是没有执行,或调用) ,那也会报错!! (go 做的很好)

    1. 例如:如果import 导入fmt ,但是程序中没有使用,那就会报错

  6. 全局只能声明变量,一个语句是不能写在全局

  7. 可执行的程序,必须放在mian函数里面

  8. 包访问控制权限

    1. 大写意味着这个函数/变量是可导出

    2. 小写意味着这个函数/变量是私有的,包外部不能访问


初始化函数

func init(){
    
}

运行一个go程序的时候,会先执行init函数,运行完毕后,才会运行main函数

#需注意的是: 当导入包的时候,先执行导入包的init函数,然后执行本程序的init函数

Go基础

布尔类型  {输出bool类型是用 :%t 输出}

  1. var b bool var b bool = true var b = true

  2. 操作符 == !=

  3. 取反操作符: !b

  4. 逻辑操作类型:   (下面的运算结果就是布尔类型 )

    1. ==:

    2. != 

    3. <

    4. <=

    5. >=

  5. && || 操作符

    1. && :与   如果第一个为假 那后面就不需要运算

    2. || : 或   如果第一个为真 那后面就不需要运算

  6. 格式化输出占位符: %t  输出布尔类型!!

  7. 算数操作符, +-*/%

数据类型和操作符

整数和浮点数

一个字节是8位

  1. int8、 int16、 int32、 int64

  2. uint8、 uint16、 uint32、 uint64

  3. int 和 uint和操作系统平台相关

  4. float32 float64浮点类型

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

复数类型
两种形式: complex64和complex128
var c complex64 = 5 + 10i
内置函数 complex(re, im) 构造⼀个复数
万能输出占位符: %V

字符串操作:

clipboard.png

位操作符

  1. 与操作: &

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

2. 或操作: |

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

3. 异或: ^  (相同的等于0  不同的等于1)

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

4. 左移 <<

1 << 10 = 1024
1 << 20 = 1M
1 << 30 = 1G

5.右移 <<

1024 >> 10 = 1
1024 >> 1 = 512
1024 >> 2 = 256

常量

  1. 常量使用const修饰,代表永远是只读的,不能修改

  2. const 只能修饰booleannumberint相关类型、浮点类型、 complex)和string

  3. const(

    a = 1
    b = 2
    c = 3
    )
#iota 初始化默认为0,
##默认递增
const(

a = 1 << iota
b
c
)

变量

var (
a int //0
b string //“”
c bool //false
d int = 8 // 8
e string = “hello” //hello
)

结构体 (struct 就是结构体定义)

struct 就是结构体定义
type User struct {
    name string
    flag uint8
}

init方法和导入包

导入其他包概念,

func init(){}  初始化函数。。当init函数运行完毕。才会运行mian函数,先执行导入包的init函数。然后执行本程序的init函数


package main

import (
   _ "godream/day2/mysql_deveices"
   "fmt"

)

func main()  {
   fmt.Println("hello")
   Say()
}




条件判断和循环

for循环的几种写法

  • 第一种写法

    • func TestFor()  {
         for a :=0;a < 10;a++{
            fmt.Println(a)
         }
      }
  • 第二种写法

    • func TestFor2()  {
         var a int =0
         for a <10{
            fmt.Println(a)
            a++
         }
      }
  • 第三种写法(循环字符串)

    • func TestForStr()  {
         str :="hello world"
         for index,val :=range str{
            fmt.Printf("index:%d --val:%c \n",index,val)
         }
      }
  • 第四种写法

    • func TestFor3()  {
         var a int =0
         for true{
            fmt.Println(a)
            a++
         }
      }

if判断的几种写法

  • 第一种

    • a :=Test()
      if a > 10 {
         fmt.Printf("good!%d\n",a)
      }
  • 第二种

    • if a:=Test(); a>10{
         fmt.Printf("高级!%d\n",a)
      }

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章