go - 从ruby 到go go 快速入门 面试醒脑知识

访问量: 689

array

数组,从声明开始,长度就是固定的。

slice

切片, 长度可以变化的数组( 声明的时候就不带长度)

var my_slice []int

my_slice = make( []int, 3 , 5)    3 : cap   5 : 长度,   [0, 0 ,0 ] (被初始化了)

my_slice2 := []int { 1,2,3}   ,  则:   cap(my_slice2) = 3,  len(my_slice2) = 3

操作: 可以截取:  

my_slice2[0:2]   =>  { 1, 2, 3}

my_slice2[0:]    从0 开始返回所有

my_slice2[:1]  从0 开始返回到index 1

copy:   copy(to_slice, from_slice)   

append(my_slice, 70)  把 70 放到 my_slice 最后一个

map

也叫哈希

make 是关键字,用来给 array, slice, map 做初始化. 设置 cap 和len. 

cap: 占用的多少内容

len: 长度

for:
做循环
使用range 来打印slice , 等。 例如   for  index, value := range my_slice { fmt.Println(index, value )}
两个运算符号:  &,  * 
var a int = 10     
&a      a的地址   , 0xc00001a140
var pointer *int
pointer = &a       // pointer:  0xc00001a140
非常好的例子:https://www.runoob.com/go/go-function-call-by-reference.html
调用函数:
swap(&a, &b)
声明函数:
func swap(a *int, b *int) {
    temp := *a
    *b = *a
    *a = temp
}
在上面函数体重:
*a : 获取  指针 a 对应的内容
&a : 获取 变量a  的地址
var a *int   则是对变量进行声明,    (a *int) 表示a 是一个pointer参数

声明strut和方法

type Fruit struct {

  name string
  color string
  status string
}

func eat( fruit *Fruit) {
  fruit.status = "eaten"
  fmt.Println("fruit is eaten: ", fruit)
}

func (f *Fruit) bite(times int) {
  fmt.Println("you bite ",  times, " times of this fruit" , f)
}

func main (){ 

  var apple = Fruit{ name: "apple", color: "red"}
  fmt.Println(apple)

  eat(&apple)
  fmt.Println(apple)

  apple.bite(3)
}
输出:

{apple red }
fruit is eaten: &{apple red eaten}
{apple red eaten}
you bite 3 times of this fruit &{apple red eaten}

字符串的split :

func minWindow(s string, t string) string {

  s2 := "hello, banana!"
  for index, element := range s2 {
    fmt.Printf("== index %d, element %c \n", index, element)
    fmt.Println(string(element))
  }
  return ""
}


结果如下:


== index 0, element h 
h
== index 1, element e 
e
== index 2, element l 
l
== index 3, element l 
l
== index 4, element o 
o
....

查看某个变量的类型

fmt.Printf(" var is %T", var)

import "reflect"

reflect.TypeOf(var)   // => 也能打印类型出来

GO的独立文件中声明的都是func, 也就是说,go 没有class , 没有继承。

go 的import ,会直接把某个文件夹下的所有go文件中的所有func都导入过来,例如 

import( v1 "some_file/pkg/api/v1")

然后就可以通过  v1.func1, v1.func2来直接调用了。

func1中声明的变量,可以直接在func2中调用。(例如db连接)

运行测试:

go test

gin 框架支持html template, 

也就是说可以进行服务器端的渲染

订阅/RSS Feed

Subscribe