Go基础随笔(三)

24 阅读1分钟
// 方法的使用 引用类型
package main

import "fmt"

type intSlice []int

func (i intSlice) Get(x int) int {
    return i[x]
}

func (i intSlice) Set(x, y int) {
    i[x] = y
}

func (i intSlice) Len() int {
    return len(i)
}

func main() {
    var i intSlice
    i = []int{1, 2, 3}
    i.Set(1, 6)
    fmt.Println(i)
}
// 方法的使用 非引用类型 (不带指针的接受者,不会对真实的内存进行修改)
package main

import "fmt"

type intSlice int

func (i intSlice) Get() intSlice {
    return i
}

func (i intSlice) Set(x int) {
    i = intSlice(x)
}

func main() {
    //var i intSlice
    //i = []int{1, 2, 3}
    i := intSlice(1)
    i.Set(2)
    fmt.Println(i.Get())
}
// 带指针的接受者会修改
package main

import "fmt"

type intSlice int

func (i *intSlice) Get() intSlice {
    return *i
}

func (i *intSlice) Set(x int) {
    *i = intSlice(x)
}

func main() {
    //var i intSlice
    //i = []int{1, 2, 3}
    i := intSlice(1)
    i.Set(2)
    fmt.Println(i.Get())
}