in go/thinking_generation.go [118:156]
func ThinkingCodeExplanation() (*genai.GenerateContentResponse, error) {
// [START thinking_code_explanation]
ctx := context.Background()
client, err := newGenAIClient(ctx)
if err != nil {
log.Printf("Failed to create client: %v", err)
return nil, err
}
prompt := `
Explain this Python code snippet step-by-step, including what it does
and why recursion is used here:
def factorial(n):
'''Calculates the factorial of a non-negative integer.'''
if not isinstance(n, int) or n < 0:
raise ValueError("Input must be a non-negative integer")
if n == 0:
return 1
else:
return n * factorial(n-1)
result = factorial(5)
print(f"The factorial of 5 is: {result}")
`
contents := []*genai.Content{
genai.NewContentFromText(prompt, genai.RoleUser),
}
resp, err := client.Models.GenerateContent(ctx, modelID, contents, nil)
if err != nil {
log.Printf("GenerateContent failed: %v", err)
return nil, err
}
fmt.Println(resp.Text())
// [END thinking_code_explanation]
return resp, nil
}