mirror of
				https://github.com/golang/go.git
				synced 2025-11-04 10:40:57 +00:00 
			
		
		
		
	
		
			
	
	
		
			48 lines
		
	
	
	
		
			743 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
	
		
			743 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								// run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Copyright 2022 The Go Authors. All rights reserved.
							 | 
						||
| 
								 | 
							
								// Use of this source code is governed by a BSD-style
							 | 
						||
| 
								 | 
							
								// license that can be found in the LICENSE file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								package main
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import "math"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func checkClearSlice() {
							 | 
						||
| 
								 | 
							
									s := []int{1, 2, 3}
							 | 
						||
| 
								 | 
							
									clear(s)
							 | 
						||
| 
								 | 
							
									for i := range s {
							 | 
						||
| 
								 | 
							
										if s[i] != 0 {
							 | 
						||
| 
								 | 
							
											panic("clear not zeroing slice elem")
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									clear([]int{})
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func checkClearMap() {
							 | 
						||
| 
								 | 
							
									m1 := make(map[int]int)
							 | 
						||
| 
								 | 
							
									m1[0] = 0
							 | 
						||
| 
								 | 
							
									m1[1] = 1
							 | 
						||
| 
								 | 
							
									clear(m1)
							 | 
						||
| 
								 | 
							
									if len(m1) != 0 {
							 | 
						||
| 
								 | 
							
										panic("m1 is not cleared")
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// map contains NaN keys is also cleared.
							 | 
						||
| 
								 | 
							
									m2 := make(map[float64]int)
							 | 
						||
| 
								 | 
							
									m2[math.NaN()] = 1
							 | 
						||
| 
								 | 
							
									m2[math.NaN()] = 1
							 | 
						||
| 
								 | 
							
									clear(m2)
							 | 
						||
| 
								 | 
							
									if len(m2) != 0 {
							 | 
						||
| 
								 | 
							
										panic("m2 is not cleared")
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									clear(map[int]int{})
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func main() {
							 | 
						||
| 
								 | 
							
									checkClearSlice()
							 | 
						||
| 
								 | 
							
									checkClearMap()
							 | 
						||
| 
								 | 
							
								}
							 |