美文网首页
04 | 运算符与指针

04 | 运算符与指针

作者: 刀斧手何在 | 来源:发表于2020-03-21 18:15 被阅读0次
  • 按位置零运算符&^

左边为被操作数,右边数值为1的比特位,对应相同位置的左边数字比特位会被置0

1 &^ 0 => 1
1 &^ 1 => 0

常用示例:

const (
    Readable = 1 << iota
    Writeable
    Executable
)

func TestBitClear(t *testing.T){
    a:= Readable | Writeable | Executable
    t.Log(a)
    a = a &^ Executable
    t.Log(a)
    a = a &^ Writeable
    t.Log(a)
}
  • _ 空白运算符
    _实际上是一个只写变量,你不能得到它的值。这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时候你并不需要使用函数的返回值。
    同样该运算符也能使用于包引入

  • 没有三目运算符

  • 自增运算符不能在赋值语句中使用 (j = i++)

指针

  • 使用&创建指针
func TestPtr(t *testing.T){
     i := 1
     var iptr *int
     iptr = &i
     t.Log(iptr,*iptr)
     *iptr = 2
     t.Log(i)
}
//result : 0xc00008c160 1 2
  • 使用new 创建指针
func TestPtr(t *testing.T){
    iptr := new(int)
    *iptr = 2
    t.Log(reflect.TypeOf(iptr),iptr,*iptr,&iptr)
}
//result : *int 0xc000016230 2 0xc00000e028   

go语言的指针不允许进行计算

  • 强制转化为任意类型指针
func TestUnsafe2(t *testing.T){
    i := 10
    f := *(*float64)(unsafe.Pointer(&i))
    t.Log(reflect.TypeOf(i),i,&i)
    t.Log(reflect.TypeOf(f),fmt.Sprintf("%f",f),&f)
}
//result : int 10 0xc0000dc008
// float64 0.000000 0xc0000dc010 

一般只用于别名类型的转化

  • 某些变量不能寻址
type Dog struct {name string}
func TestPtr(t *testing.T){
    dog := Dog{"little pig"}
    dogP := &dog
    dogPtr := uintptr(unsafe.Pointer(dogP))
    t.Log(dog,dogP,dogPtr)
    *dogP = Dog{"big pig"}
    t.Log(dog,dogP,dogPtr)
}
//result: {little pig} &{little pig} 824634278736
// {big pig} &{big pig} 824634278736
  • new 与 make 的区别

相关文章

  • iOS 指针(C指针)

    运算符 & 指针变量的定义 指针与数组

  • 04 | 运算符与指针

    按位置零运算符&^ 左边为被操作数,右边数值为1的比特位,对应相同位置的左边数字比特位会被置0 常用示例: _ 空...

  • 运算符重载

    一.+号运算符重载 二.<<号运算符重载 三.指针运算符重载(智能指针)

  • C++基础7:指针和引用

    一.指针 ** 1.指针概念**:指针就是用来保存内存地址的变量。 2.声明指针的方式:int *p;与运算符*结...

  • C/C++指针

    概念一个变量的指针就是该变量的地址,用来存放指针的变量就是指针变量。*指针运算符,也叫间接访问运算符 。&取指针运...

  • go指针

    定义 &变量 取地址操作 引用运算符 *指针变量 取值操作 解引用运算符 指针变量必...

  • C++ 不允许重载的 5 个运算符是

    .* —— 成员指针访问运算符号 :: —— 域运算符 Sizeof —— 长度运算符号 ?: —— 条件运算符号...

  • 指针

    指针:一个变量,其值为另一个变量地址; 指针的算术运算 指针的递增 指针与数组的关系 可以使用指针的算术运算符来访...

  • C++原生指针,引用与智能指针

    Ref 原生指针 c++原生指针来源于c语言,常与取地址运算符&搭配使用,基本操作有修改指针指向,解引用操作。常用...

  • &运算符 与 *运算符

    & 运算符用作获取变量的地址。* 运算符通过变量的地址取值、赋值。 1.基本用法: 2.指向指针的指针:

网友评论

      本文标题:04 | 运算符与指针

      本文链接:https://www.haomeiwen.com/subject/ncujthtx.html