60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Strings, Runes and Bytes Quiz
 | |
| 
 | |
| ## Which byte slice below equals to the "keeper" string?
 | |
| ```go
 | |
| // Here are the corresponding code points for the runes of "keeper":
 | |
| // k => 107
 | |
| // e => 101
 | |
| // p => 112
 | |
| // r => 114
 | |
| ```
 | |
| 1. []byte{107, 101, 101, 112, 101, 114} *CORRECT*
 | |
| 2. []byte{112, 101, 101, 112, 114, 101}
 | |
| 3. []byte{114, 101, 112, 101, 101, 112}
 | |
| 4. []byte{112, 101, 101, 114, 107, 101}
 | |
| 
 | |
| 
 | |
| ## What does this code print?
 | |
| ```go
 | |
| // Code points:
 | |
| // g => 103
 | |
| // o => 111
 | |
| fmt.Println(string(103), string(111))
 | |
| ```
 | |
| 1. 103 111
 | |
| 2. g o *CORRECT*
 | |
| 3. n o
 | |
| 4. "103 111"
 | |
| 
 | |
| 
 | |
| ## What does this code print?
 | |
| ```go
 | |
| const word = "gökyüzü"
 | |
| bword := []byte(word)
 | |
| 
 | |
| // ö => 2 bytes
 | |
| // ü => 2 bytes
 | |
| fmt.Println(utf8.RuneCount(bword), len(word), len(string(word[1])))
 | |
| ```
 | |
| 1. 7 10 2 *CORRECT*
 | |
| 2. 10 7 1
 | |
| 3. 10 7 2
 | |
| 4. 7 7 1
 | |
| 
 | |
| 
 | |
| ## Which one below is true?
 | |
| 1. for range loops over the bytes of a string
 | |
| 2. for range loops over the runes of a string *CORRECT*
 | |
| 
 | |
| 
 | |
| ## For a utf-8 encoded string value, which one below is true?
 | |
| 1. runes always start and end in the same indexes
 | |
| 2. runes may start and end in different indexes *CORRECT*
 | |
| 3. bytes may start and end in different indexes
 | |
| 
 | |
| 
 | |
| 
 | |
| ## Why can't you change the bytes of a string value?
 | |
| 1. Strings values are immutable byte slices
 | |
| 2. Strings are used a lot so they are being shared behind the scenes
 | |
| 3. All of above *CORRECT* |