Ir notas de estudio de desarrollo básico (d) - los tipos de datos básicos y intercambiables Cadena

Tipo de datos básicos para:
requerir la conversión explícita (molde) la asignación entre los diferentes tipos de variables de tipos de datos Golang, Goalng no se pueden convertir de forma automática!

Método de conversión: Pitón similares, comunicada T (v) la función de la forma de realización convertido.
Los ejemplos son como sigue

	package main
	import "fmt"
	
	func main() {
	//尝试使用 i = float32(i)不可行,必须要重新定义变量
	var i int = 100
	var i1 float32 = float32(i)
	fmt.Printf("i1=%v\n",i1)
	fmt.Printf("i的类型为:%T\n",i)      //int
	fmt.Printf("i1的类型为:%T",i1)      //float32
	}

ilustración:

  1. Pequeño convierte alcance rango grande, rango de pequeño a grande puede variar, INT8 cambio Int16, Int16 convertido INT8 puede ser.

  2. Datos sitios de prueba de tipo de conversión: la conversión solo por el valor convertido para el tipo especificado impartir i i1, i sí mismo y el tipo de datos no cambia,
    es valor convertido se almacena en una variable, los datos de variable de tipo en sí no ha cambiado.

  3. En la conversión, si se convierte a int8 Int64, el compilador no se queja pero el resultado del proceso de conversión se desbordará en binario, el resultado es incompatible, por lo que no gire fuertes tipos de datos.

  4. Dos ejemplos de una profunda comprensión de los tipos de datos:

    // tipo de valor de conversión de datos asignado puede no tipos de datos intransitables transversales, tales como Int32 Int64 asignado a, esto no es, sin duda, se debe convertir a Int64 int32 valor de la variable

    var (
    	n1 int32
    	n2 int64
    	n3 int8
    )
    n1 = 32
    n2 = int64(n1) + 10
    n3 = int8(n2) + 10
    fmt.Printf("%d %d %d",n1,n2,n3)
    

    // línea con el tipo intxx pero no cumple con el rango de valores, el compilador no se queja, pero el valor desbordaría; hasta asignación no cumple con el rango numérico de valores, el compilador directamente error, entonces el no
    // compilador no puede pasar directamente, desbordamiento de datos n5, n6 sí 128 no se puede asignar a N6

    var (
    n4 int8
    n5 int8
    n6 int8
    )
    n4 = 10
    n5 = int8(n4) + 127
    n6 = int8(n4) + 128
    fmt.Printf("%d %d %d",n4,n5,n6)
    

★ tipos de datos básicos y tipos de cadenas son interconvertibles

  1. el desarrollo de programas a menudo requiere la conversión del sistema de cuerdas y otros tipos.

  2. Cadena básica de conversión de tipo:
    (. 1) fmt.Sprintf () : sprintf personaje generado parámetro de formato de cadena y devuelve la cadena con formato.

    (2) StrConv ():
    func FormatBool (b bool) string
    func FormatInt (i Int64, int base) string
    func FormatUint (i uint64, int base) string
    func FormatFloat (, fmt byte, prec, Bitsize int f float64) string

    Ilustra dos códigos de conversión maneras:

    package main
    
    import (
    	"fmt"
    	"strconv"
    )
    
    func main() {
    	//第一种方式,使用fmt.Sprintf()函数来转
    	num1,num2,bo,char := 90,20.5,true,"b"
    	var str,str1,str2,str3 string
    	str = fmt.Sprintf("%d\n",num1)
    	str1 = fmt.Sprintf("%f\n",num2)
    	str2 = fmt.Sprintf("%t\n",bo)
    	str3 = fmt.Sprintf("%v\n",char)
    	fmt.Println(str,str1,str2,str3)
    
    	/*第二种方式,使用package strconv:
    	func FormatBool(b bool) string
    	func FormatInt(i int64, base int) string
    	func FormatUint(i uint64, base int) string
    	func FormatFloat(f float64, fmt byte, prec, bitSize int) string
    	 */
    	var str4,str5,str6 string
    	num3,num4,bo1 := 99,13.56,true
    	//参数1:必须为int64, 参数2:多少进制
    	str4 = strconv.FormatInt(int64(num3),10)
    	//参数1:必须为float64,参数2:f是正常输出,e则是e的n次方格式
    	//参数3:小数点后多少位,参数4:bitSize为64
    	str5 = strconv.FormatFloat(float64(num4),'f',2,64)
    	//参数1:直接传变量即可                
    	str6 = strconv.FormatBool(bo1)
    	fmt.Println(str4,str5,str6)
        
        //Itoa()函数挺好使的,直接把一个int转换成字符串,但是不支持int64,相当于num5如果不是int还需要转int
    	var num5 int = 100
    	str7 = strconv.Itoa(num5)
    	fmt.Println(str7)
    }
    

3. cadena de tipo de datos de tipo de conversión básico
FUNC ParseBool (STR String) (valor BOOL, error ERR)
FUNC parseInt (String S, int Base, int Bitsize) (Int64 I, error ERR)
FUNC ParseUint (S String, int Base, Bitsize int) (n-UInt64, error ERR)
FUNC parseFloat (S String, Bitsize int) (F float64, error ERR)

Utilice la función strconv.Parsexxxx () para realizar diferentes tipos de conversiones.
El siguiente estudio de caso, que muestra cómo una rotación cadena tipos básicos:

	package main
	
	import (
	"fmt"
	"strconv"
	)
	
	func main() {
	/*
	可以看出来这里面几个函数都会返回两个值,一个是value,一个是error,我们
	需要的只是value,对error并不关心,所以可以使用"_"来忽略这个error
	例如:
	b , _ = strconv.ParseBool(str)
	func ParseBool(str string) (value bool, err error)
	func ParseInt(s string, base int, bitSize int) (i int64, err error)
	func ParseUint(s string, base int, bitSize int) (n uint64, err error)
	func ParseFloat(s string, bitSize int) (f float64, err error)
	*/
	
	//布尔值转换
	var str string = "true"
	var b bool
	b , _ = strconv.ParseBool(str)      //这个写法要注意,因为返回两个值
	fmt.Println(b)
	
	//int转换
	var str1 string = "123456"
	var num int64
	num , _  = strconv.ParseInt(str1,10,64)
	fmt.Printf("%T\n",num)
	
	//float转换
	var str2 string = "123.456"
	var num1 float32
	var num2 = float64(num1)
	num2 , _ = strconv.ParseFloat(str2,64)
	fmt.Println(num2)
	}

Publicado 50 artículos originales · alabanza ganado 18 · vistas 4025

Supongo que te gusta

Origin blog.csdn.net/weixin_41047549/article/details/89574743
Recomendado
Clasificación