获取存储在地址中的值

时间:2018-10-19 23:30:11

标签: go memory-address

我开始学习GO,希望有人能帮助我理解一些东西。如何读取syscall.GetcomputerName返回的地址中的值?我知道该调用会将地址存储在变量y中。谢谢

package main

import "fmt"

import "syscall"
import "os"

func main() {
    x, err := os.Hostname()
    y := syscall.GetComputerName
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(x)
    fmt.Println(y)

}

1 个答案:

答案 0 :(得分:4)

syscall.GetComputerName是函数的地址。要执行syscall.GetComputerName函数,请使用函数调用运算符()。例如,在Windows上,

package main

import (
    "fmt"
    "syscall"
    "unicode/utf16"
)

func ComputerName() (name string, err error) {
    var n uint32 = syscall.MAX_COMPUTERNAME_LENGTH + 1
    b := make([]uint16, n)
    e := syscall.GetComputerName(&b[0], &n)
    if e != nil {
        return "", e
    }
    return string(utf16.Decode(b[0:n])), nil
}

func main() {
    name, err := ComputerName()
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println("ComputerName:", name)
}

输出:

ComputerName: PETER

Microsoft: GetComputerNameW