golang 字符串与整数, 布尔转换 strconv
package main import (
"bytes"
"fmt"
"reflect"
"strconv"
"strings"
) func testString() {
var tString string //对于golang, string没有nil概念, tString = nil 和 tString == nil 这两种写法不能通过编译
fmt.Println(tString == "") //true
fmt.Println(len(tString) == 0) //true
fmt.Printf("address=%p\n", &tString) tString = "hello,中国" //字符串是不可变的
fmt.Printf("tString len = %d\n", len(tString)) //结果为 12, go中string的底层实现是[]byte, 所以string的len是按照字符串的byte数组的长度计算的, 一个中文字符占3个byte
fmt.Printf("first byte = %c\n", tString[0]) //可以通过下标访问字节, 但不能修改
s := tString[0:] //这种操作要慎用, 每一次转换都需要复制内容, 并且切片(s)和原字符串(tString)所指向的底层字符数组是一个
fmt.Println(reflect.TypeOf(s)) //结果为string, 字符串的切片操作, 这里要注意返回的仍然是字符串, 而不是slice rString := []rune(tString) //如果想访问中文, 可以用rune类型
fmt.Printf("tString char 7 = %c\n", rString[7]) //国
fmt.Printf("tString char len = %d\n", len(rString)) //结果为 8
//byte实质上是uint8类型, rune实质上是uint32类型 //字符串拼接, 出于效率上的考虑, 如果是少量的拼接,使用哪种都可以, 但如果有大量的字符串拼接, 性能要求较高的场合, 那么选择选择合适的拼接方式就显得很重要
tString = "hello" + "," + "world" // 直接使用运算符 "+" 链接, 因为每次运算都会产生新的字符串,空间和gc不太友好, 优点在于简洁清晰
tString = fmt.Sprintf("%s%s%d", "hello ", "world", 5) //fmt格式化, 逻辑复杂, 几种拼接方式中, 效率基本是最低的, 优点可以格式化其他的类型
tString = strings.Join([]string{"hello", "world"}, ":") //strings拼接, 优点在 如果已有一个字符串数组效率很高, 但如果是重新构造的话, 代价也不小
buffer := bytes.Buffer{} //bytes.Buffer, 适用于大量的拼接,性能要求较高的场景
buffer.WriteString("hello")
buffer.WriteString("world")
fmt.Println(buffer.String())
fmt.Println(tString) //字符串的更多操作(截取, 分割, 比较, 索引, 前后缀等)strings
fmt.Println(strings.Contains(tString, "中")) //字符串与基础数据类型的转换在strconv包
iString := "5"
i, _ := strconv.Atoi(iString) //字符串转int
strconv.Itoa(i) //int转string
ui, _ := strconv.ParseInt(iString, 10, 8) //第一个参数是需要转换的字符串, 第二个是进制(二进制, 八进制...), 第三个是bit大小(int8,int16...) //ParseFloat, ParseUint, ParseBool分别是字符串转换浮点, uint, 布尔类型.
//基础类型转换成string有Format
strconv.FormatInt(ui, 10)
strconv.FormatBool(true)
//字符串操作的包是strings, 比较, 前后缀, 去空格, 切分, 大小写转换... } func main() { testString() }
golang 字符串与整数, 布尔转换 strconv的更多相关文章
- 编程练习------C/C++分别实现字符串与整数的转换
C/C++分别实现字符串与整数的转换 前提:不使用 itoa 和 atoi. 方法一.C和C++通用的一种转换手段是: 1.整数转化为字符串:采用加'0',再逆序的办法,整数加'0'就会隐性转化成ch ...
- Leetcode8--->String to Integer(实现字符串到整数的转换)
题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“ 123 ” = 123: 2. 字符串“+123” = 123: 3. 字符串“-12 ...
- Golang 字符串操作--使用strings、strconv包
strings包 package main import ( "fmt" "strings" ) func main() { //func Count(s, s ...
- python自动化--字符串和整数的转换,while的循环体
字符串(str)和整数(int)类型变量的结合 *遵循只有同一类型的变量才可以结合. *不同类型的变量之间的转换 实例:实现打印出"192.168.100"和1的结合出" ...
- 不使用c的任何库函数 实现字符串到整数的转换 整数到字符串的转换
转载请标明出处:http://www.cnblogs.com/NongSi-Net/p/6805844.html 今天主要总结下:完成编程: 1.除printf函数之外,不用任何c语言库函数,实现将字 ...
- 3.Python自我修炼(升仙中....整数,布尔值,字符串,for循环)
python学习(整数,布尔值,字符串,for循环) 1.整数 在python3中所有的整数都是int类型. 但在python2中如果数据量比较大. 会使用long类型.但是在python3中不存 ...
- python 字符串和整数,浮点型互相转换
在编程当中,经常要用到字符串的互相转换, 现在记录 python 里面的字符串和整数是怎么转换的. int(str) 函数将 符合整数的规范的字符串 转换成 int 型. num2 = "1 ...
- LintCode-54.转换字符串到整数
转换字符串到整数 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN( ...
- 用递归法将一个整数n转换成字符串。
用递归法将一个整数n转换成字符串. 比如,输入483,应输出字符串"483".n的位数不确定,能够是随意位数的整数. #include "stdafx.h" # ...
随机推荐
- C实现线程池
简介:这里使用linux下的互斥锁和条件变量实现了一个线程池.代码由一个未知作者完成,第二任作者补充优化. 本人仅仅是做了一些注释工作. 代码如下: /*! .h */ #include <st ...
- MySQL学习笔记:创建整年日期
见识到另外一种创意,惊讶! 1.创建小数据表 0-9 # 创建小数据表 DROP TABLE IF EXISTS aa_numbers_small; CREATE TABLE aa_numbers_s ...
- Retrofit + RxJava + OkHttp 让网络请求变的简单-基础篇
https://www.jianshu.com/p/5bc866b9cbb9 最近因为手头上的工作做完了,比较闲,想着做一些优化.看到以前用的那一套网络框架添加一个请求比较麻烦,并且比较难用,所以想改 ...
- Codeforces Round #334 (Div. 1) B. Moodular Arithmetic
B - Moodular Arithmetic 题目大意:题意:告诉你p和k,其中(0<=k<=p-1),x属于{0,1,2,3,....,p-1},f函数要满足f(k*x%p)=k*f( ...
- const理解
const int * a4 = &a1; ///const data,non-const pointer int * const a5 = &a1; ///non-const dat ...
- 黑马程序员_java基础笔记(07)...IO流
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— IO(InputStream,outputStream)字节流 (Reader,Wr ...
- Java去重字符串的两种方法以及java中冒号的使用
package com.removesamestring; import java.io.BufferedWriter; import java.util.ArrayList; import java ...
- 02:实现Singleton模式
Java实现单例模式有很多种实现方法,其中我们应根据需要选择线程安全的与非线程安全的两种方式,根据对象实现的方式又分为饱汉与饿汉方式. 这里使用java中的volatile关键字与synchroniz ...
- 俄罗斯方块 Tetris
今天,为大家带来一个用Qt C++ (Windows环境下)做的一个简易俄罗斯方块小游戏 思路和模块介绍都在注释里面,其次就是一些项目中遇到的问题以及解决方案,在后面部分说明. 一.效果 测试图样 Q ...
- ubuntu16.04(64位)建立交叉编译环境,并配置编译内核
安装步骤 1.准备工具安装目录 将压缩包gcc-linaro-arm-linux-bnueabihf-4.9-2014.07_linux.tar存放在一个目录下,这个目录就是你等会解压缩的目录,以后这 ...