58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								// For more tutorials: https://blog.learngoprogramming.com
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Copyright © 2018 Inanc Gumus
							 | 
						||
| 
								 | 
							
								// Learn Go Programming Course
							 | 
						||
| 
								 | 
							
								// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package main
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import "fmt"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func main() {
							 | 
						||
| 
								 | 
							
									str := "hey"
							 | 
						||
| 
								 | 
							
									bytes := []byte{104, 101, 121}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// same as: []byte("hey")
							 | 
						||
| 
								 | 
							
									fmt.Printf(`"hey" as bytes   : %d`+"\n", []byte(str))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// same as: string([]byte{104, 101, 121})
							 | 
						||
| 
								 | 
							
									fmt.Printf("bytes as string  : %q\n", string(bytes))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// runes are unicode codepoints (numbers)
							 | 
						||
| 
								 | 
							
									fmt.Println()
							 | 
						||
| 
								 | 
							
									fmt.Printf("%c                : %[1]d\n", 'h')
							 | 
						||
| 
								 | 
							
									fmt.Printf("%c                : %[1]d\n", 'e')
							 | 
						||
| 
								 | 
							
									fmt.Printf("%c                : %[1]d\n", 'y')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// a rune literal is typeless
							 | 
						||
| 
								 | 
							
									// you can put it in any numeric type
							 | 
						||
| 
								 | 
							
									var (
							 | 
						||
| 
								 | 
							
										anInt   int   = 'h'
							 | 
						||
| 
								 | 
							
										anInt8  int8  = 'h'
							 | 
						||
| 
								 | 
							
										anInt16 int16 = 'h'
							 | 
						||
| 
								 | 
							
										anInt32 int32 = 'h'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// rune literal's default type is: rune
							 | 
						||
| 
								 | 
							
										// so, you don't need to specify it.
							 | 
						||
| 
								 | 
							
										// aRune   rune  = 'h'
							 | 
						||
| 
								 | 
							
										aRune = 'h'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// and so on...
							 | 
						||
| 
								 | 
							
									)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Println()
							 | 
						||
| 
								 | 
							
									fmt.Printf("rune literals are typeless:\n\t%T %T %T %T %T\n",
							 | 
						||
| 
								 | 
							
										anInt, anInt8, anInt16, anInt32, aRune)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Println()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// all are the same rune
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// beginning with go 1.13 you can type: 0b0110_1000 instead
							 | 
						||
| 
								 | 
							
									// fmt.Printf("%q as binary: %08[1]b\n", 0b0110_1000)
							 | 
						||
| 
								 | 
							
									fmt.Printf("%q in decimal: %[1]d\n", 104)
							 | 
						||
| 
								 | 
							
									fmt.Printf("%q in binary : %08[1]b\n", 'h')
							 | 
						||
| 
								 | 
							
									fmt.Printf("%q in hex    : 0x%[1]x\n", 0x68)
							 | 
						||
| 
								 | 
							
								}
							 |