Go语言中如何将枚举常量赋值给结构体的指针类型成员?
Go中为结构体指针字段赋值枚举常量的方案
针对你遇到的问题,有两种简洁的解决方式:
方式一:使用new函数分配内存
先通过new创建一个UnitCategoryCode类型的指针,再对指针指向的值赋值:
// 先分配内存,让CategoryCode指向非nil地址 unit.CategoryCode = new(d.UnitCategoryCode) // 对指针指向的变量赋值枚举常量 *unit.CategoryCode = d.AdministrativeUnit
方式二:借助临时变量取地址
先把枚举常量赋值给临时变量,再取变量的地址赋值给CategoryCode:
// 将常量值存入临时变量 catCode := d.AdministrativeUnit // 取临时变量的地址赋值给指针字段 unit.CategoryCode = &catCode
补充说明
因为d.AdministrativeUnit是常量,Go不允许直接取常量的地址(&d.AdministrativeUnit非法),所以必须通过new分配内存,或者借助变量中转来获取合法指针,再完成赋值。
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

