浅谈golang中的&^位清空操作

如下所示:

c = a &^ b

含义:b 转为二进制时,值为1 的位置对应c的位置值为0;c中剩余位置值与a对应位置值相同(即:所谓的位清空操作,把b中1对应位置在c位置上清空),详见下面代码

package main
import "fmt"
func main() {
 a := 12
 b := 4
 c := a &^ b
 fmt.Printf("a: %08b\n", a)
 fmt.Printf("b:%08b\n", b)
 fmt.Printf("c: %#v 二进制:%08b\n",c,c)
 /*输出:
 a: 00001100
 b:00000100
 c: 8 二进制:00001000
 */
}

补充:Golang Slice 删除指定的索引(下标)和 slice 清空 等常用操作

package main
import (
 "fmt"
)

//清空切面元素
func CleanSlice() {
 //方法一 通过 切片赋值 方式 清空
 var Cslice []int = []int{1, 2, 3}
 fmt.Printf("清空前元素>>:\n")
 fmt.Printf("len:%v\tceanslice:%v\n", len(Cslice), Cslice)
 Cslice = Cslice[0:0]
 fmt.Printf("清空后元素>>:\n")
 fmt.Printf("len:%v\tceanslice:%v\n", len(Cslice), Cslice)
}

//删除指定的索引元素
func DelIndex() {
 var DelIndex []int
 DelIndex = make([]int, 5)
 DelIndex[0] = 0
 DelIndex[1] = 1
 DelIndex[2] = 2
 DelIndex[3] = 3
 DelIndex[4] = 4
 fmt.Println("删除指定索引(下标)前>>:")
 fmt.Printf("len:%v\tDelIndex:%v\n", len(DelIndex), DelIndex)
 //删除元素 3 索引(下标) 3
 index := 3
 //这里通过 append 方法 分成两个然后合并
 // append(切片名,追加的元素) 切片名这里我们进行切割一个新的切片DelIndex[:index] 追加的元素将索引后面的元素追加
 // DelIndex[index+1:]...) 为什么追加会有...三个点, 因为是一个切片 所以需要展开

 DelIndex = append(DelIndex[:index], DelIndex[index+1:]...)
 fmt.Printf("len:%v\tDelIndex:%v\n", len(DelIndex), DelIndex)
}
func main() {
 CleanSlice()
 fmt.Println()
 DelIndex()
}

切片的反转 reverse

package main
import "fmt"
func reverse1(s []int) {
 for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
 s[i], s[j] = s[j], s[i]
 }
}

func reverse2(s []int) {
 for i := 0; i < len(s)/2; i++ {
 s[i], s[len(s)-i-1] = s[len(s)-i-1], s[i]
 }
}

func main() {
 var s []int = []int{1, 2, 3}
 reverse1(s)
 fmt.Printf("s:%v\n", s)
 fmt.Println()
 reverse2(s)
 fmt.Printf("s:%v\n", s)
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • golang fmt占位符的使用详解

    golang fmt格式"占位符" golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式. Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字

  • Golang 运算符及位运算详解

    什么是运算符? 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+". 在vb2005中运算符大致可以分为5种类型:算术运算符.位运算符. 关系运算符.赋值运算符.逻辑运算符. 算数运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符. func main() { a, b := 3,4 fmt.Printf("a 加 b

  • 浅谈golang二进制bit位的常用操作

    golang作为一热门的兼顾性能 效率的热门语言,相信很多人都知道,在编程语言排行榜上一直都是很亮眼,作为一门强类型语言,二进制位的操作肯定是避免不了的,数据的最小的单位也就是位,尤其是网络中封包.拆包,读取二进制文件等用的特别广泛, 所以学好golang二进制bit位的常用操作还是很必要的,而且很多运算尤其是乘法除法运算,CPU效率是很低的,这时候可以二进制操作代替,不多说了,上干货! package main import ( "fmt" "github.com/imro

  • golang 占位符和fmt常见输出介绍

    1.常用的占位符 %d 整型占位符 %f 浮点型占位符 %t 布尔型占位符 %s 字符串类型占位符 %q 带引号字符串类型占位符 %p 指针型占位符 %v 通用占位符 %b 二进制 %x 十进制 2.fmt 输出 fmt.Print 输出到控制台,不接受任何格式操作 fmt.Println 输出到控制台并换行 fmt.Printf 只可以打印出格式化的字符串 fmt.Sprintf 格式化并返回一个字符串而不带任何输出 fmt.Fpirntf 格式化并输出到io.writers 而不是os.St

  • golang 64位linux环境下编译出32位程序操作

    目标:在64位linux系统上编译出32位程序. 操作: 1.执行 go env 查看当前go环境配置 2.执行 export GOARCH=386 配置go输出系统平台为32位 3.go build 编译程序 4.使用file main 指令查看编译出的可执行程序是否为32位 实践图片: 补充:golang float32/64与[]byte互转 网络协议开发中经常需要将int.float.bool等转为二进制数据,float32.64 与[]byte处理: import ( "encodin

  • golang生成指定位数的随机数的方法

    1.随机数 随机数,是使用一个确定性的算法计算出来随机数序.在程序开发中经常需要产生随机数,如随机数验证码登陆.作为唯一身份标识数据等等. 2.rand库 golang中产生随机数主要有两个包,分别是"math/rand"和"crypto/rand". "math/rand"的rand包实现了伪随机数生成器. "crypto/rand"的rand包实现了用于加解密的更安全的随机数生成器. 3.生成指定位数随机数 以生成六位随机

  • 浅谈golang中的&^位清空操作

    如下所示: c = a &^ b 含义:b 转为二进制时,值为1 的位置对应c的位置值为0:c中剩余位置值与a对应位置值相同(即:所谓的位清空操作,把b中1对应位置在c位置上清空),详见下面代码 package main import "fmt" func main() { a := 12 b := 4 c := a &^ b fmt.Printf("a: %08b\n", a) fmt.Printf("b:%08b\n", b)

  • 浅谈Golang中创建一个简单的服务器的方法

    我们知道,golang中的net/http包对网络的支持非常好,这样会让我们比较容易的建立起一个相对简单的服务器,我们来看一段代码 func sayHi(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w,"Hi") } func main() { http.HandleFunc("/sayHi", sayHi) log.Fatal(http.ListenAndServe("localhost:80

  • 浅谈golang 中time.After释放的问题

    在谢大群里看到有同学在讨论time.After泄漏的问题,就算时间到了也不会释放,瞬间就惊呆了,忍不住做了试验,结果发现应该没有这么的恐怖的,是有泄漏的风险不过不算是泄漏, 先看API的说明: // After waits for the duration to elapse and then sends the current time // on the returned channel. // It is equivalent to NewTimer(d).C. // The underl

  • 浅谈python中列表、字符串、字典的常用操作

    列表操作如此下: a = ["haha","xixi","baba"] 增:a.append[gg] a.insert[1,gg] 在下标为1的地方,新增 gg 删:a.remove(haha) 删除列表中从左往右,第一个匹配到的 haha del a.[0] 删除下标为0 对应的值 a.pop(0) 括号里不写内容,默认删除最后一个,写了,就删除对应下标的内容 改:a.[0] = "gg" 查:a[0] a.index(&q

  • 浅谈tensorflow中Dataset图片的批量读取及维度的操作详解

    三维的读取图片(w, h, c): import tensorflow as tf import glob import os def _parse_function(filename): # print(filename) image_string = tf.read_file(filename) image_decoded = tf.image.decode_image(image_string) # (375, 500, 3) image_resized = tf.image.resize

  • 浅谈Python中os模块及shutil模块的常规操作

    如下所示: #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. #只支持在 Unix, Windows 下使用 import os, sys # 打开文件 path=r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore' dirs = os.listdir( path ) print(dirs) # 输出所有文件和文件夹 for fil

  • 浅谈hibernate中懒加载禁用操作

    浅谈hibernate中懒加载禁用操作 懒加载的概念:懒加载就是hibernate中的延迟加载,在hibernate中的一对多,多对多关系中通过对象导航来查询对象时一般默认的就是懒加载.就是当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性是,才会向数据库中再一次发出查询语句.懒加载在某些情况下确实可以减少不必要的sql语句,但是有的情况下,还是会抛出异常. 下面我将介绍懒加载禁用的方式 方式一: 在需要禁用懒加载的实体对象的配置文件中配置lazy="f

  • 浅谈Java中Lambda表达式的相关操作

    为什么要使用Lambda? 可以对一个接口进行非常简洁的实现. Lambda对接口的要求? 接口中定义的抽象方法有且只有一个才可以. 传统实现一个接口需要这样做: 方法一: // 实现接口,同时必须重写接口中抽象方法 class Test implements IntrfacefN { @Override public void getUser(int a, int b) { } } // @FunctionalInterface 注解意思:函数式接口,用来做规范,有这个注解,说明此接口有且只有

  • 浅谈c++中的stl中的map用法详解

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 下面举例说明什么是一对一的数据映射.比如一个班级中,每个学生的学号跟他的姓名就存在着一一

  • 浅谈Golang是如何读取文件内容的(7种)

    本文旨在快速介绍Go标准库中读取文件的许多选项. 在Go中(就此而言,大多数底层语言和某些动态语言(如Node))返回字节流. 不将所有内容自动转换为字符串的好处是,其中之一是避免昂贵的字符串分配,这会增加GC压力. 为了使本文更加简单,我将使用string(arrayOfBytes)将bytes数组转换为字符串. 但是,在发布生产代码时,不应将其作为一般建议. 1.读取整个文件到内存中 首先,标准库提供了多种功能和实用程序来读取文件数据.我们将从os软件包中提供的基本情况开始.这意味着两个先决

随机推荐