我从数据库中提取一些数据 - 我有一个指向float32的指针 - 因为如果我使用指针 - 那么我可以检查它是否为nil(通常可能是这样)。
当它不是nil时,我想获得值 - 我如何取消引用它以便我可以得到实际的float32?我实际上找不到任何链接!我确切地知道我想要做什么,而我在Go中找不到语法,我仍然很新 - 所有帮助都很感激。
我知道如果它是一个直接的float32 ...
,如何取消引用指针但如果我有以下结构...
if myAwesomeType.Value == nil{
// Handle the error later, I don't care about this yet...
} else{
/* What do I do here? Normally if it were a straight float32
* pointer, you might just do &ptr or whatever, but I am so
* confused about how to get this out of my struct...
*/
}
然后我做了:
(defun nSum (n sum)
(if ( n = 0) ( sum) )
(cond ( (mod n 5) = 0) ( nSum ( - n 1) (+ sum n)) ( (mod n 3) = 0) (nSum(- n 1) (+ sum n)) (nSum (- n 1) (+ sum n))
)
)
(setq sum (nSum 100 0))
(write sum)
答案 0 :(得分:3)
The Go Programming Language Specification
对于指针类型* T的操作数x,指针间接* x 表示由x指向的类型T的变量。如果x为零,则为 尝试评估* x会导致运行时恐慌。
使用*
运算符。例如,
package main
import "fmt"
type MyAwesomeType struct {
Value *float32
}
func main() {
pi := float32(3.14159)
myAwesomeType := MyAwesomeType{Value: &pi}
if myAwesomeType.Value == nil {
// Handle the error
} else {
value := *myAwesomeType.Value
fmt.Println(value)
}
}
游乐场:https://play.golang.org/p/8URumKoVl_t
输出:
3.14159
由于您是Go的新手,请A Tour of Go。这次旅行解释了许多事情,包括指针。
指针
Go有指针。指针保存值的内存地址。
类型
*T
是指向T
值的指针。其零值为nil
。var p *int
&
运算符生成指向其操作数的指针。i := 42 p = &i
*
运算符表示指针的基础值。fmt.Println(*p) // read i through the pointer p *p = 21 // set i through the pointer p
这被称为"解除引用"或"间接"。
与C不同,Go没有指针算法。