Golang 整理笔记

声明变量

数据类型

字符串

数组

字典map

流程控制

 

 

 

声明变量:

关键字var来声明,类型信息放在变量名之后,且 变量声明语句不需要使用分号作为结束符.   示例如下:

var v1 int var v2 string var v3 [10]int   // 数组 
var v4 []int                    // 数组切片 
var v5 struct {     f int } 
var v6 *int                    // 指针 
var v7 map[string]int             // map,key为string类型,value为int类型 
var v8 func(a int) int             // 声明函数

var关键字的另一种用法是可以将若干个需要声明的变量放置在一起,    如下示例:

var (
      v1 int
      v2 string 
) 

 

1. 变量初始化:

在声明变量处于初始化的时候, var 关键字可留可弃.   如下所示:

var v1 int = 10 // 正确的使用方式1  
var v2 = 10      // 正确的使用方式2,编译器可以自动推导出v2的类型 
v3 := 10          // 正确的使用方式3,编译器可以自动推导出v3的类型     

// 指定类型已不再是必需的,Go编译器可以从初始化表达式的右值推导出该变量应该声明为 哪种类型,这让Go语言看起来有点像动态类型语言,尽管Go语言实际上是不折不扣的强类型语 言(静态类型语言)。 

// 注意: :=左侧的变量不应该是已经被声明过的,否则会导致编译错误

// err: no new variables on left side of := 

 

2. 变量赋值:   ( 变量初始化和变量赋值是两个不同的概念。)

声明一个变量之后的赋值 过程示例:

var v10 int 
v10 = 123 

且 支持多重赋值功能  示例:

i, j = j, i  //  等同于:  t = i; i = j; j = t; 

 

 3. 类型推断:

在初始化的时候, 可以自动推断出 变量的类型, 也就是说, 可以省略 type

package main

import "fmt"

func main() {
    var age = 29 // 可以推断age的类型为 int 

    fmt.Println("my age is", age)
}

 

4. 同时声明多个变量:

语法:

var name1, name2 type = initialvalue1, initialvalue2 

 

5. 简短声明: := 操作符

语法:    name := initialvalue

要求: 

 := 操作符左边的所有变量都有初始值 赋值。

 := 操作符的左边至少有一个变量是尚未声明的.

 

注意: 由于 Go 是强类型(Strongly Typed)语言,因此不允许某一类型的变量赋值为其他类型的值   错误示例:

package main

func main() {  
    age := 29      // age是int类型
    age = "naveen" // 错误,尝试赋值一个字符串给int类型变量
}

 

数据类型: 

Go的基本类型:

    • bool
    • 数字类型
      • int8, int16, int32, int64, int
      • uint8, uint16, uint32, uint64, uint
      • float32, float64
      • complex64, complex128
      • byte
      • rune
    • string

 

bool类型(布尔值):

bool 类型表示一个布尔值,值为 true 或者 false。

 

数字类型:

有符号整型:

int8: 表示8位的 有符号整型;   大小: 8位(bytes);   范围: -128~127

int16: 表示16位有符号整型;   大小: 16 位(bytes);   范围: -32768~32767

int32:表示 32 位有符号整型;   大小: 32 位(bytes);   范围: -2147483648~2147483647

int64:表示 64 位有符号整型;   大小: 64 位(bytes);   范围: -9223372036854775808~9223372036854775807

int:根据操作系统的位数 而表示 32位,或64位整型.  除非对整型的大小有特定的需求, 一般都用int来表示整型

 

无符号整型:

 

  详情: https://studygolang.com/articles/11869

 

浮点数:

  float32:32 位浮点数
  float64:64 位浮点数

 

复数:

  complex64:实部和虚部都是 float32 类型的的复数。
  complex128:实部和虚部都是 float64 类型的的复数。

其他:

  byte 是 uint8 的别名。
  rune 是 int32 的别名。

类型转换: 

  Go 有着非常严格的强类型特征。Go 没有自动类型提升或类型转换。

  赋值的情况:  把一个变量赋值给另一个不同类型的变量,需要显式的类型转换;

 

 

字符串:

 

 

数组:

 

 

字典map:

 

 

流程控制:

 

posted @ 2018-09-10 21:57  浮生凉年  阅读(113)  评论(0编辑  收藏  举报